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 
相关推荐
ERD Online4 小时前
MySQL/Oracle/PG/SQLServer 存量库一键逆向成关系图
mysql·oracle·sqlserver
哥本哈士奇(aspnetx)1 天前
dbt+SQLServer构建数据仓库(6):Jinja与DAG实战
sqlserver
哥本哈士奇2 天前
dbt+SQLServer构建数据仓库(3):dbt_project.yml配置精讲
数据仓库·sqlserver
哥本哈士奇2 天前
dbt+SQLServer构建数据仓库(4):分层建模实战
数据仓库·sqlserver
哥本哈士奇(aspnetx)3 天前
dbt+SQLServer构建数据仓库(4):分层建模实战
sqlserver
哥本哈士奇(aspnetx)4 天前
dbt+SQLServer构建数据仓库(3):dbt_project.yml配置精讲
sqlserver
全麦面包 time展天4 天前
走向DBA[MSSQL篇] 从SQL语句的角度 提高数据库的访问性能
数据库·sqlserver·dba
满昕欢喜5 天前
2.4 本地服务器组和中央管理服务器
数据库·sqlserver
哥本哈士奇(aspnetx)6 天前
dbt+SQLServer构建数据仓库(1):认识dbt与项目工作流程
sqlserver
xuefuhe9 天前
SQL Server 监控login的IP
sqlserver