首页 > 数据库 > SQL Server > 正文

SQL Server实现Split函数将字符串分隔转换成数据表

2024-08-31 00:54:56
字体:
来源:转载
供稿:网友
SQL Server实现Split函数将字符串分隔转换成数据表需求

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',',')

效果

QQ截图20150119143539

本文来自笔者博客,原文地址:SQL Server实现Split函数将字符串分隔转换成数据表


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表