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 
相关推荐
哥本哈士奇(aspnetx)1 天前
dbt+SQLServer构建数据仓库(1):认识dbt与项目工作流程
sqlserver
xuefuhe4 天前
SQL Server 监控login的IP
sqlserver
半桶水专家4 天前
SQL Server DML 操作语句完全指南
数据库·sqlserver
测试修炼手册15 天前
[测试技术] JUnit 6 入门与实战:断言、参数化与 Mockito
数据库·junit·sqlserver
心之语歌15 天前
SQL Server 按月分区实战:动态边界自动生成方案
sqlserver
bosins19 天前
部署SSIS并增加SQL Server代理作业,任务正常执行但事件查看器一直报DCOM权限问题
sqlserver·ssis·权限·dcom·事件查看器
xuefuhe19 天前
SQL Server sp_replmonitorsubscriptionpendingcmds
sqlserver
龙仔72522 天前
SQL Server 批量多库只读账号一键脚本(带逐行注释完整脚本 + 分段逐句详细解释)
服务器·数据库·sql·sqlserver·dba
xuefuhe1 个月前
SQL Server查看系统存储过程及视图的定义
sqlserver
techdashen1 个月前
Uber 如何完成超大规模 JUnit 迁移:从 JUnit 4 到 JUnit 5 的自动化工程实践
junit·sqlserver·自动化