C#语言中有内置的字符串函数Split()可以轻松实现分隔将类似 1,2,3,4 的字符串变成数组,然后进行处理,但是SQL Server默认没有这种内置的支持。
实现需要通过自定义函数来实现,思路就是创建表值函数,返回一个分隔后的数据表,然后查询这个返回的表即可。
代码如下SET ANSI_NULLS ON调用方法GO
SET QUOTED_IDENTIFIER ON
GO
ALTER FUNCTION [dbo].[SplitToTable_Func]
(
@SplitString varchar(max),
@Separator nvarchar(10)=' '
)
RETURNS @SplitStringsTable TABLE
(
[id] int identity(1,1),
[value] varchar(max)
)
AS
BEGIN
IF @SplitString<>''
BEGIN
DECLARE @CurrentIndex int
DECLARE @NextIndex int
DECLARE @ReturnText varchar(max)
SELECT @CurrentIndex=1
WHILE(@CurrentIndex<=len(@SplitString)+1)
BEGIN
SELECT @NextIndex=charindex(@Separator,@SplitString,@CurrentIndex)
IF(@NextIndex=0 OR @NextIndex IS NULL)
SELECT @NextIndex=len(@SplitString)+1
SELECT @ReturnText=substring(@SplitString,@CurrentIndex,@NextIndex-@CurrentIndex)
INSERT INTO @SplitStringsTable([value]) VALUES(@ReturnText)
SELECT @CurrentIndex=@NextIndex+1
END
END
RETURN
END
效果SELECT * FROM dbo.SplitToTable_Func('1,2,3,4',',')
本文来自笔者博客,原文地址:SQL Server实现Split函数将字符串分隔转换成数据表
新闻热点
疑难解答