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 
相关推荐
数智启示录4 天前
Flink CDC 机制精讲(四):一条 SQLServer CDC 事件如何保持顺序 【面试宝典】
数据库·面试·sqlserver·flink
数据库小学妹6 天前
SQL Server数据迁移怎么做?一次事故复盘:备份还原、bcp、CDC、KDTS全拆解
sqlserver·备份还原·数据库迁移·信创迁移·sqlserver数据迁移
xuefuhe6 天前
SQL Server exec vs sp_executesql
sqlserver
zengjuan10057 天前
[特殊字符]️ 松鼠备份 | 数据库备份方案即将重磅上线!三大模式组合拳,精准守护SQL Server每一笔数据
数据库·sqlserver·数据库备份·全量备份·增量备份·差异备份·日志和事务备份
识途老码7 天前
docker运行sqlserver
docker·容器·sqlserver
熊文豪16 天前
SQLServer数据迁移之后,那张报表还能不能秒出
数据库·sqlserver·电科金仓
Alex Gram17 天前
数据库同步工具PanguSync图文教程
java·mysql·postgresql·sqlserver·c#·数据库同步软件·数据库同步工具
哥本哈士奇19 天前
dbt+SQLServer构建数据仓库(10):macro 以及 data vault的应用实例
大数据·数据仓库·sqlserver
哥本哈士奇(aspnetx)20 天前
dbt+SQLServer构建数据仓库(10):macro 以及 data vault的应用实例
sqlserver
哥本哈士奇21 天前
dbt+SQLServer构建数据仓库(8):Vibe Coding用dbt构建data vault数仓
数据仓库·sqlserver