t-sql使用csv字符串查找特定值

jac*_*ack 4 sql t-sql csv parsing

我需要一些帮助SQL查询.我有一个列的值存储为逗号分隔值.

我需要编写一个查询,查找列中每个值中的第3个分隔项.

这可以在Select语句中执行此操作吗?例如:ColumnValue:josh,Reg01,False,a0-t0,22/09/2010

所以我需要False从上面的字符串中获取第3个值(即).

pod*_*ska 6

是.

@s你的字符串在哪里......

select 
    SUBSTRING (@s,
    CHARINDEX(',',@s,CHARINDEX(',',@s)+1)+1,
    CHARINDEX(',',@s,CHARINDEX(',',@s,CHARINDEX(',',@s)+1)+1)
          -CHARINDEX(',',@s,CHARINDEX(',',@s)+1)-1)
Run Code Online (Sandbox Code Playgroud)

或者更一般地......

;with cte as 
(
    select 1 as Item, 1 as Start, CHARINDEX(',',@s, 1) as Split
    union all
    select cte.Item+1, cte.Split+1, nullif(CHARINDEX(',',@s, cte.Split+1),0) as Split
    from cte
    where cte.Split<>0  
)   
select SUBSTRING(@s, start,isnull(split,len(@s)+1)-start) 
from cte 
where Item = 3
Run Code Online (Sandbox Code Playgroud)

现在正确存储您的数据:)