SqlServer Split功能函数
/*========================================================
函数名称:f_SplitToGuid
作 用:实现split功能 的函数
更新记录:
1、 ******
设计思路:将nvarchar类型字符结合的一个串,分隔到一张只有一列nvarchar类型的表里
创建人:huyg
创建时间:2010-03-02 13:58
=========================================================*/
ALTER function [dbo].[f_SplitToNvarchar]
(
@SourceSql nvarchar(max),--源分隔字符串
@StrSeprate varchar(10)--分隔符
)
returns @temp table(a nvarchar(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
/*========================================================
函数名称:f_SplitToInt
作 用:实现split功能 的函数
更新记录:
1、 ******
设计思路:将int类型字符组合的一个串,分隔到一张只有一列int类型的表里
创建人:huyg
创建时间:2010-03-02 13:58
=========================================================*/
ALTER function [dbo].[f_SplitToInt]
(
@SourceSql varchar(max),--源分隔字符串
@StrSeprate varchar(10)--分隔符
)
returns @temp table(a int)
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
/*========================================================
函数名称:f_SplitToGuid
作 用:实现split功能 的函数
更新记录:
1、 ******
设计思路:将nvarchar类型字符结合的一个串,分隔到一张只有一列nvarchar类型的表里
创建人:huyg
创建时间:2010-03-02 13:58
=========================================================*/
ALTER function [dbo].[f_SplitToGuid]
(
@SourceSql nvarchar(max),--源分隔字符串
@StrSeprate varchar(10)--分隔符
)
returns @temp table(a uniqueidentifier)
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
调用例子:
CREATE PROC [dbo].[GetSolutionByEnNameList]
@EnNameList Nvarchar(max)
as
begin
SELECT ID,EnName
FROM A
WHERE A.EnName
IN( SELECT a FROM f_SplitToNvarchar(@EnNameList,','))
end
类别:sql ado 存储过程 查看评论
posted on 2010-08-19 14:08 dreamontheway 阅读(5964) 评论(0) 编辑 收藏 举报
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· 单线程的Redis速度为什么快?
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码