以前看过别人写的,但是实在记不起来是怎么写的了,今天自己写了一个,在这里标记一下
- --定义须查询的字串
- declare @queryString nvarchar(1000)
- --定义循环内截取出来的子字符串,如有字符串'abc,123,中国,',循环内第一次截取@temp='abd',第二次@temp='123',第三次@temp='中国'
- declare @temp varchar(32)
- --定义分隔符','的位置
- declare @pos int
- --定义截取出来的子字符串的长度
- declare @len int
- set @queryString='abc,123,中国,'
- --Charindex(分隔符,被查询的字符串,查询起始位置),这里是取分隔符','出现的位置
- set @pos=Charindex(',',@queryString,0)
- while(@pos>0)
- begin
- --Substring(被查询的字符串,起始位置,截止位置),根据分隔符的位置截取字符串
- set @temp=Substring(@queryString,0,@pos)
- --len(子字符串),取得子字符串的长度
- set @len=len(@temp)
- --下面只是把分隔符之间的字符串依次输出,可替换成你自己的操作
- select @temp
- --Stuff(被查询的字符串,起始位置,截止位置),把子字符串从被查询的字符串中去除,第一次循环时把'abc,'从'abc,123,中国,'去除,这时queryString就是'123,中国,'了
- set @queryString=Stuff(@queryString,1,@len+1,'')
- --下面是控制循环的条件
- set @pos=Charindex(',',@queryString,0)
- end
--定义须查询的字串
declare @queryString nvarchar(1000)
--定义循环内截取出来的子字符串,如有字符串'abc,123,中国,',循环内第一次截取@temp='abd',第二次@temp='123',第三次@temp='中国'
declare @temp varchar(32)
--定义分隔符','的位置
declare @pos int
--定义截取出来的子字符串的长度
declare @len int
set @queryString='abc,123,中国,'
--Charindex(分隔符,被查询的字符串,查询起始位置),这里是取分隔符','出现的位置
set @pos=Charindex(',',@queryString,0)
while(@pos>0)
begin
--Substring(被查询的字符串,起始位置,截止位置),根据分隔符的位置截取字符串
set @temp=Substring(@queryString,0,@pos)
--len(子字符串),取得子字符串的长度
set @len=len(@temp)
--下面只是把分隔符之间的字符串依次输出,可替换成你自己的操作
select @temp
--Stuff(被查询的字符串,起始位置,截止位置),把子字符串从被查询的字符串中去除,第一次循环时把'abc,'从'abc,123,中国,'去除,这时queryString就是'123,中国,'了
set @queryString=Stuff(@queryString,1,@len+1,'')
--下面是控制循环的条件
set @pos=Charindex(',',@queryString,0)
end