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 
相关推荐
山岚的运维笔记16 小时前
SQL Server笔记 -- 第13章:IF...ELSE
数据库·笔记·sql·microsoft·sqlserver
woshilys4 天前
sql server 表被另外一张表锁
sqlserver
zhangzeyuaaa5 天前
SQL Server删除重复数据
运维·sqlserver
雪碧聊技术7 天前
DBeaver连接sql server数据库时,提示驱动版本不合适
数据库·sqlserver·dbeaver·更换驱动·修改java.security
雷工笔记7 天前
数据库|SQLServer2025安装教程
数据库·sqlserver
梁正雄9 天前
linux服务-麒麟10安装sqlserver
linux·运维·sqlserver
齐 飞10 天前
SQL server使用MybatisPlus查询SQL加上WITH (NOLOCK)
数据库·mysql·sqlserver
曲幽11 天前
从0到1掌握SQL Server可编程性:让数据自己动起来
sql·sqlserver·delete·insert·function·update·trigger·procedure
LJ979511112 天前
智能媒体发布时代,企业如何把握话语权?
sqlserver