`
hgfghww
  • 浏览: 40699 次
  • 性别: Icon_minigender_1
  • 来自: 上海
最近访客 更多访客>>
社区版块
存档分类
最新评论

SQL Server2005截取字符串并操作

阅读更多

  以前看过别人写的,但是实在记不起来是怎么写的了,今天自己写了一个,在这里标记一下 
  
  --定义须查询的字串   
  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 
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics