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 
相关推荐
满昕欢喜2 天前
SQL Server从入门到项目实践(超值版)读书笔记 28
数据库·sql·sqlserver
TiAmo zhang3 天前
SQL Server 2019实验 │ 设计数据库的完整性
数据库·sqlserver
安冬的码畜日常4 天前
【JUnit实战3_02】第二章:探索 JUnit 的核心功能(一)
数据库·junit·sqlserver
TiAmo zhang4 天前
SQL Server 2019实验 │ 管理SQL Server的安全性
数据库·sqlserver
FIavor.6 天前
程序包org.junit.jupiter.api不存在这怎么办
数据库·junit·sqlserver
TiAmo zhang6 天前
SQL Server 2019实验 │ 安装及其管理工具的使用
数据库·sqlserver
jackletter6 天前
待补充 五大关系数据库(sqlserver、mysql、oracle、pgsql、sqlite)的列类型:目录
mysql·oracle·sqlserver·sqlite·pgsql·列类型
TiAmo zhang10 天前
调查问卷管理系统开发 │ 系统功能概述
数据库·sqlserver
步行cgn10 天前
JUnit 单元测试详细使用指南
junit·sqlserver·单元测试
cgsthtm10 天前
SQL Server自动定时备份还原到另一台服务器
sqlserver·定时备份还原·任务计划程序·映射网络驱动器·代理作业