sqlserver中字符串根据某个字符进行截取

**字符串:**11-22-333-4444-55-666

**截取后的内容:**11、22、333、4444、55、666

注:可自定义一张临时表用于存放截取的内容

sql 复制代码
DECLARE @str NVARCHAR(50)='11-22-333-4444-55-666'  --字符串
DECLARE @custr NVARCHAR(5)='-'   --截取字符
DECLARE @length INT=LEN(@str)    --总长度
DECLARE @count INT=(@length - LEN(REPLACE(@str, @custr, ''))) / LEN(@custr) --截取字符总个数
DECLARE @i INT=0
DECLARE @j INT=0
DECLARE @e INT=0
DECLARE @newstr NVARCHAR(MAX)=''  --新字符串
DECLARE @restr NVARCHAR(max)=''   --返回字符


WHILE(@i<=@count)
BEGIN 
	--截取字符串
	SET @newstr=RIGHT(@str,@length-@j)

	SET @e=CHARINDEX(@custr,@newstr)

	IF @e>0
	SET @restr=SUBSTRING(@newstr,0,@e)
	ELSE 
	SET @restr=SUBSTRING(@newstr,0,LEN(@newstr))

	SELECT @restr

	SET @j=@j+LEN(@restr)+1

	SET @i=@i+1
END 
相关推荐
xuefuhe4 小时前
SQL Server变量复用陷阱
sqlserver
星光不负赶路人!2 天前
【工作记录】sqlserver数据库操作及迁移
服务器·数据库·sqlserver
_1_74 天前
SQL Server 磁盘满了 收缩日志
数据库·sqlserver
满昕欢喜4 天前
第2章 SQL Server 2019服务器管理
数据库·sqlserver
淘源码d4 天前
医院专业级PACS系统完整源码(C+VC+MSSQL)
c语言·数据库·sqlserver·源码·pacs系统·医学影像系统
woshilys5 天前
sql server 比较字符是否相同
sqlserver
赖龙5 天前
SQL Server 日志收缩实战:从空间告急到稳定运行
sqlserver
_1_78 天前
SQL SERVER闪退问题解决
数据库·sqlserver
李白客8 天前
SQL Server 迁移注意事项:一次的真实复盘与经验沉淀
数据库·sqlserver·迁移学习
全栈小58 天前
【数据库】Sql Server,A表的a字段更新到B表的a字段,基础知识点,一分钟拿下
sqlserver