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>模式,这样就可以用上面的方法了

 

目录
相关文章
|
4月前
|
存储 SQL Oracle
|
8月前
|
存储 SQL
sql_存储过程、函数、分支、循环
sql_存储过程、函数、分支、循环
95 0
|
存储 SQL 程序员
【Sql Server】 使用游标循环记录更新字段值
使用游标循环记录更新字段值
326 0
【Sql Server】 使用游标循环记录更新字段值
SQL 循环遍历结果集
SQL 循环遍历结果集
182 0
|
SQL
SQL面试题:循环操作
HiveSQL面试题,找出一串数字中1的位置
391 0
|
SQL 分布式计算 MaxCompute
MaxComputer-Pyodps之使用pyodps实现sql的循环
用过MaxComputer的同学,都知道MaxComputer SQL只支持常用DDL\DML语句,不支持存储过程的开发,但我们常常为解决业务逻辑的时候需要使用循环或递归,那这个在MaxComputer里面该怎么实现呢?
7166 0
|
SQL Go
SQL SERVER GO命令循环使用实例
原文:SQL SERVER GO命令循环使用实例 通过GO  命令 来达到语句循环效果  也叫批循环 print '输出10次' GO 10  也可用来新增 语句  NOCOUNT ON 用来屏蔽 新增语句输出的影响行数 我们只看循环次数 SET NOCOUNT ON; GO INSERT INTO dbo.
643 0
|
SQL 数据库 Go
游标遍历所有数据库循环执行修改数据库的sql命令
原文:游标遍历所有数据库循环执行修改数据库的sql命令 MSSQL数据库服务器上有很多类似的数据库,需要将这些数据库统一修改其中的某些表或者某些命令,那么就会想到用游标来遍历。 先来说思路: 1,首先需要查询出所有的数据库;   select [name] from [master].
3360 0
|
SQL Go 数据库
SQL Server 自动循环归档分区数据脚本
原文:SQL Server 自动循环归档分区数据脚本 标签:SQL SERVER/MSSQL SERVER/数据库/DBA/表分区 概述   在很多业务场景下我们需要对一些记录量比较大的表进行分区,同时为了保证性能需要将一些旧的数据进行归档。
1235 0