我需要一些关于 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/