在sql的单个查询中使用charindex,交叉应用和子串

时间:2011-04-12 04:57:43

标签: sql-server

我有一个查询如下,以显示字符串@prodid= ''1,2,10,4,5,6,7,8,13,16,17,3''中的'dbo.proudction @prodid= ''1,2,10,4,5,6,7,8,13,16,17,3'' ,@stock= 0'

declare @T table(Col1 varchar(100))
insert into @T values ('dbo.proudction @prodid= ''1,2,10,4,5,6,7,8,13,16,17,3'' ,@stock= 0')

select 
  substring(Col1, Start, Stop-Start)
from @T
  cross apply 
    (select charindex('''', Col1)+1) c1(Start)
  cross apply
    (select charindex('''', Col1, Start)) c2(Stop)

你能帮我理解这个查询的工作吗?

1 个答案:

答案 0 :(得分:0)

第一个cross apply使用charindex找到字符串中的第一个引号。第二个cross apply定位字符串中的第二个引号。然后substring将在第一个引号和第二个引号之间提取文本。

结果

1,2,10,4,5,6,7,8,13,16,17,3