当前位置: 代码迷 >> Sql Server >> sql中查询第5个逗号之后第6个逗号之前的数据如何查啊求大神告知
  详细解决方案

sql中查询第5个逗号之后第6个逗号之前的数据如何查啊求大神告知

热度:17   发布时间:2016-04-24 09:18:10.0
sql中查询第5个逗号之后第6个逗号之前的数据怎么查啊?求大神告知
比如是:  1,,,,,1212,,,
要得出1212 怎么办呢?
------解决思路----------------------
引用:
用CHARINDEX函数,获得第5个和第6个逗号的位置,然后用SubString函数获取之间的内容


Declare @SS NVarchar(100)

Set @SS = N'1,,,,,1212,,,'

Declare @Step Int
Set @Step = 1

--循环将第五个逗号前的数据截断
While @Step <=5
Begin
Set @SS = SUBSTRING(@SS,CHARINDEX(N',',@SS,1) + 1,LEN(@SS))

Set @Step = @Step + 1
End

--获取第6个逗号前的数据
Set @SS = SUBSTRING(@SS,1,CHARINDEX(N',',@SS,1) -1)

Print @ss
------解决思路----------------------
Create function char_index(@string varchar(8000),@char varchar(10),@index int)
--@string:待查找字符串,@index:查找位置
returns int
as
begin
  declare
  @i int,--当前找到第@i个
  @position int--所在位置
  set @position=1;
  set @i=0;
  while charindex(@char,@string,@position)>0
  begin
    set @position=charindex(@char,@string,@position)+1;
    set @i=@i+1;
    if @i=@index
    begin
     return @position-1;
    end
  end
  return 0;--0表示未找到
end 
select substring('sdf_dsf_dfgdg_ertr_erte',dbo.char_index('sdf_dsf_dfgdg_ertr_erte','f_',1)+len('f_'),
dbo.char_index('sdf_dsf_dfgdg_ertr_erte','f_',2)-len('f_')-dbo.char_index('sdf_dsf_dfgdg_ertr_erte','f_',1))
  相关解决方案