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

我需要编写一个查询来查找列中每个值中的第三个分隔项。

这是否可以在 Select 语句中执行此操作?
例如:ColumnValue:josh,Reg01,False,a0-t0,22/09/2010
所以我需要从上面的字符串中获取第三个值(即)False

最佳答案

是的。

其中 @s 是您的字符串...

select
    SUBSTRING (@s,
    CHARINDEX(',',@s,CHARINDEX(',',@s)+1)+1,
    CHARINDEX(',',@s,CHARINDEX(',',@s,CHARINDEX(',',@s)+1)+1)
          -CHARINDEX(',',@s,CHARINDEX(',',@s)+1)-1)

或者更一般地...
;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

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

关于sql - t-sql 用 csv 字符串查找特定值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12278198/

10-10 20:21