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

 

目录
相关文章
|
1月前
|
SQL 存储 索引
如何在 SQL Server 中使用 `CHARINDEX`
【8月更文挑战第10天】
175 3
如何在 SQL Server 中使用 `CHARINDEX`
|
1月前
|
SQL 关系型数据库 MySQL
INSERT INTO t_a.tableName SELECT * FROM t_b.tableName 如何通过定义一个list对象,包含多个tableName,循环执行前面的sql,用MySQL的语法写
【8月更文挑战第7天】INSERT INTO t_a.tableName SELECT * FROM t_b.tableName 如何通过定义一个list对象,包含多个tableName,循环执行前面的sql,用MySQL的语法写
23 5
|
4月前
|
SQL Oracle 安全
Oracle的PL/SQL循环语句:数据的“旋转木马”与“无限之旅”
【4月更文挑战第19天】Oracle PL/SQL中的循环语句(LOOP、EXIT WHEN、FOR、WHILE)是处理数据的关键工具,用于批量操作、报表生成和复杂业务逻辑。LOOP提供无限循环,可通过EXIT WHEN设定退出条件;FOR循环适用于固定次数迭代,WHILE循环基于条件判断执行。有效使用循环能提高效率,但需注意避免无限循环和优化大数据处理性能。掌握循环语句,将使数据处理更加高效和便捷。
|
4月前
|
SQL Oracle 关系型数据库
Oracle的PL/SQL中FOR语句循环游标的奇幻之旅
【4月更文挑战第19天】在Oracle PL/SQL中,FOR语句与游标结合,提供了一种简化数据遍历的高效方法。传统游标处理涉及多个步骤,而FOR循环游标自动处理细节,使代码更简洁、易读。通过示例展示了如何使用FOR循环游标遍历员工表并打印姓名和薪资,对比传统方式,FOR语句不仅简化代码,还因内部优化提升了执行效率。推荐开发者利用这一功能提高工作效率。
|
4月前
|
存储 SQL Oracle
|
存储 SQL
sql_存储过程、函数、分支、循环
sql_存储过程、函数、分支、循环
124 0
|
存储 SQL 程序员
【Sql Server】 使用游标循环记录更新字段值
使用游标循环记录更新字段值
350 0
【Sql Server】 使用游标循环记录更新字段值
SQL 循环遍历结果集
SQL 循环遍历结果集
213 0
oracle_sql_循环插入数据
了解并学习oracle_sql_循环插入数据。
282 0
|
SQL
SQL面试题:循环操作
HiveSQL面试题,找出一串数字中1的位置
407 0