SQL利于CHARINDEX循环

本文介绍了一种在SQL中实现循环的方法,通过使用CHARINDEX函数来处理字符串或从数据库中获取的数据,实现了无需游标也能进行循环的功能。

对于在SQL里循环是件挺难受的事,虽然可以利用游标,但是游标的表如果正在被频繁使用那就悲剧了,于是只能想别的方法循环了,这里利用CHARINDEX循环。循环的模式可以是存储过程查询传递过来的内含规则的变量,也可以是数据库数据,如果是传递的变量看下面的代码即可。

declare @str varchar(100) --字符串
declare @k int --字符串的断点位置 数值型
declare @start int --当前字符串开始位置
set @str='<a111><a222><a333>'
set @start=2
set @k=charindex('>',@str,@start)

--print 'f'+substring(@str ,0,2)
while @k>0
begin
 print '当前位置'+cast(@k as char(5))
declare @nowstr varchar(100)
set @nowstr=substring(@str,@start ,@k-@start)--断点位置减去开始位置 为字符串长度
print '字符串开始位置'+cast(@start as char(5))  +'截取数量'+cast(@k-@start as char(5))+''

--使用字符串@nowstr 操作

set @start=@k+2 --重设开始截取字符串位置
print '截取的字符串'+@nowstr

set  @k=charindex('>',@str,@k+1)

end

如果是数据库的数据,那就得先查询出来,才能遍历,怎么查询呢?利于SQL的FOR XML PATH('')

Select id from table FOR XML PATH('')

查询出来的结果就是<a111><a222><a333>模式,这样就可以用上面的方法了

 

转载于:https://www.cnblogs.com/kiba/archive/2012/08/07/SQL.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值