常用脚本--将指定的字符串拆分多行数据
--============================================== --将指定的字符串拆分多行数据 --============================================== ALTER FUNCTION dbo.ufn_SplitString ( @SourceSql VARCHAR(MAX) , @StrSeprate VARCHAR(10) ) RETURNS @temp TABLE (C1 VARCHAR(MAX) ) AS BEGIN DECLARE @i INT SET @SourceSql = RTRIM(LTRIM(@SourceSql)) SET @i = CHARINDEX(@StrSeprate, @SourceSql) WHILE @i >= 1 BEGIN INSERT @temp VALUES ( LEFT(@SourceSql, @i - 1) ) SET @SourceSql = SUBSTRING(@SourceSql, @i + 1, LEN(@SourceSql) - @i) SET @i = CHARINDEX(@StrSeprate, @SourceSql) END IF @SourceSql <> '\' INSERT @temp VALUES ( @SourceSql ) RETURN END GO --===================================================== --用法: SELECT * FROM dbo.ufn_SplitString('ABDC,BDF,DEF,,',',') --排除空字符串 SELECT * FROM dbo.ufn_SplitString('ABDC,BDF,DEF,,',',') WHERE C1<>''
版本2
--=============================================================== --拆分脚本 CREATE FUNCTION [dbo].[SplitString] ( @Input NVARCHAR(MAX), --input string to be separated @Separator NVARCHAR(MAX)=',', --a string that delimit the substrings in the input string @RemoveEmptyEntries BIT=1 --the return value does not include array elements that contain an empty string ) RETURNS @TABLE TABLE ( [Id] INT IDENTITY(1,1), [VALUE] NVARCHAR(MAX)) AS BEGIN DECLARE @Index INT, @Entry NVARCHAR(MAX) SET @Index = CHARINDEX(@Separator,@Input) WHILE (@Index>0) BEGIN SET @Entry=LTRIM(RTRIM(SUBSTRING(@Input, 1, @Index-1))) IF (@RemoveEmptyEntries=0) OR (@RemoveEmptyEntries=1 AND @Entry<>'') BEGIN INSERT INTO @TABLE([VALUE]) VALUES(@Entry) END SET @Input = SUBSTRING(@Input, @Index+DATALENGTH(@Separator)/2, LEN(@Input)) SET @Index = CHARINDEX(@Separator, @Input) END SET @Entry=LTRIM(RTRIM(@Input)) IF (@RemoveEmptyEntries=0) OR (@RemoveEmptyEntries=1 AND @Entry<>'') BEGIN INSERT INTO @TABLE([VALUE]) VALUES(@Entry) END RETURN END --=============================================================== --测试脚本 DECLARE @str1 VARCHAR(MAX), @str2 VARCHAR(MAX), @str3 VARCHAR(MAX) SET @str1 = '1,2,3' SET @str2 = '1###2###3' SET @str3 = '1###2###3###' SELECT [VALUE] FROM [dbo].[SplitString](@str1, ',', 1) SELECT [VALUE] FROM [dbo].[SplitString](@str2, '###', 1) SELECT [VALUE] FROM [dbo].[SplitString](@str3, '###', 0)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 25岁的心里话
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现