MS SQL 拆分逗号并检索字段

create table curtest (djbh varchar(20) primary key,sales varchar(20))
go
insert curtest
select ‘A1‘,‘01,02,03‘ union all           --创建表并插入记录
select ‘A2‘,‘01,02‘  union all
select ‘A3‘,‘02,03‘  union all
select ‘A4‘,‘02,03,04‘  
go

declare cur_test cursor for select * from curtest    --声明游标
declare @djbh varchar(20)                            --定义变量单据编号
declare @sales varchar(20)                            --定义变量销售
declare @star int,@len int,@dhwz int                -- 定义变量开始,长度,逗号位置
open cur_test                                        --打开游标
fetch next from cur_test into @djbh,@sales            --获取第一条记录
while(@@FETCH_STATUS=0)                                --根据返回状态确认执行结果。0代表成功
begin
set @star=1                                            --对开始位置赋值1
set @dhwz=CHARINDEX(‘,‘,@sales,@star)                --获取第一个逗号位置
set @len=LEN(@sales)                                --获取字段长度
while(@star<[email protected])                                    --循环条件,开始位置小于字段长度
begin                                            
select @djbh,substring(@sales,@star,@[email protected])        --获取逗号前字符 
set @[email protected]+1                                        --每次循环,将上次逗号位置+1作为下次开始位置
set @dhwz=CHARINDEX(‘,‘,@sales,@star)                   --以上次逗号位置+1作为本次开始位置,检索下一个逗号位置
if(@dhwz=0)                                                --判断,当检索不到逗号(即返回值为0,并且已到达最后一个逗号)
begin
select @djbh,SUBSTRING(@sales,@star,(@[email protected])+1)     --最后一个逗号后字符,以上一次逗号位置+1开始,长度为字段总长度减开始位置+1
break                                                    --跳出循环    
end    
end
fetch next from cur_test into @djbh,@sales              --读取下一条记录,并重新开始执行循环(拆分并检索逗号分割字符)
end
close cur_test

时间: 2024-11-04 12:30:08

MS SQL 拆分逗号并检索字段的相关文章

MS SQL 为表中的字段添加/修改说明

--使用 execute sp_addextendedproperty / sp_updateextendedproperty 过程 --添加表说明 execute sp_addextendedproperty 'MS_Description','表说明','user','dbo','table','表名'; --添加表-字段说明 execute sp_addextendedproperty N'MS_Description',N'字段说明',N'SCHEMA',N'dbo',N'table',

MS SQL巡检系列&mdash;&mdash;检查外键字段是否缺少索引

前言感想:一时兴起,突然想写一个关于MS SQL的巡检系列方面的文章,因为我觉得这方面的知识分享是有价值,也是非常有意义的.一方面,很多经验不足的人,对于巡检有点茫然,不知道要从哪些方面巡检,另外一方面,网上关于MS SQL巡检方面的资料好像也不是特别多.写这个系列只是一个分享,自己的初衷是一个知识梳理.总结提炼过程,有些知识和脚本也不是原创,文章很多地方融入了自己的一些想法和见解的,不足和肤浅之处肯定也非常多,抛砖引玉,也希望大家提意见和建议.补充,指正其中的不足之处.Stay Hungry

在英文版操作系统中安装的MS SQL server,中文字段无法匹配

在英文版的操作系统中安装的MS SQL server,会出现中文字段无法被匹配到.其原因在于英文环境下安装的MS SQL server的排序规则不包括中文. 所以解决办法就是更改MS SQL server的排序规则:一般情况下,只需要右键数据库->properties->optiones->collation->chose "Chinese RPC CI AS"->OK.如果执行成功则OK. 但是如果数据库中设置了一些临时表的依赖,那么执行会报错. 解决办

sql取逗号前后数据与批量修改某一字段某一值

sql取逗号后的值 SELECT SUBSTRING_INDEX(字段,",",-1) FROM 表名 sql取逗号前的值 SELECT SUBSTRING_INDEX(字段,",",1) FROM 表名 批量修改 UPDATE 表名 SET 字段=REPLACE(字段,'需要修改的值','修改后的值') 原文地址:https://www.cnblogs.com/weixin18/p/10530929.html

MS SQL为字段添加说明

以ms sql server 14  v17为例. 如下表dbo.Q中有一个字段'' 首先在数据库的系统存储过程列表中: 找到sys.sp_addextendedproperty,使用这个为字段添加一个说明. EXECUTE [sys].[sp_addextendedproperty] @name=N'MS_Description', @value=N'数量' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@le

MS SQL语句优化

MS SQL Server查询优化方法查询速度慢的原因很多,常见如下几种 1.没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷) 2.I/O吞吐量小,形成了瓶颈效应. 3.没有创建计算列导致查询不优化. 4.内存不足 5.网络速度慢 6.查询出的数据量过大(可以采用多次查询,其他的方法降低数据量) 7.锁或者死锁(这也是查询慢最常见的问题,是程序设计的缺陷) 8.sp_lock,sp_who,活动的用户查看,原因是读写竞争资源. 9.返回了不必要的行和列 10.查询语句不好,没

MS Sql优化(转自网络)

MS SQL Server查询优化方法查询速度慢的原因很多,常见如下几种 1.没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷) 2.I/O吞吐量小,形成了瓶颈效应. 3.没有创建计算列导致查询不优化. 4.内存不足 5.网络速度慢 6.查询出的数据量过大(可以采用多次查询,其他的方法降低数据量) 7.锁或者死锁(这也是查询慢最常见的问题,是程序设计的缺陷) 8.sp_lock,sp_who,活动的用户查看,原因是读写竞争资源. 9.返回了不必要的行和列 10.查询语句不好,没

MS SQL 模仿ORACLE的DESC

前言: 在ORACLE数据库的SQL*PLUS里面有个DES(DESCRIBE)命令,它可以返回数据库所存储对象的描述,如下所示 SQL> DESC STUDENT_SCORE   Name Type Nullable Default Comments   ---------------- ---------- -------- ------- --------   STUDENT_NO NUMBER(10) 学号   CHINESE_SCORE NUMBER Y 语文成绩   ENGLISH_

MS SQL 日志记录管理

MS SQL的日志信息/日志记录,可能对你来说,既熟悉又陌生,熟悉是因为你可能一直都在使用,查看.关注一些日志信息/记录,例如,作业历史记录:陌生是因为你可能从不关注日志信息/记录的管理,这里我一直用日志信息/记录这个词,而没有用日志文件这个词来阐述,是想让大家把它和事务日志文件(ldf)区分开来,网上你用日志文件做搜索关键词,可能搜出来的都是事务日志相关的信息.其实它真的也叫日志文件,这篇文章我大概从日志记录分类.如何查看日志记录.日志记录的位置.日志记录的设置.为什么错误日志会暴增.如何清除