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函數將字符串分隔轉換成數據表
新聞熱點
疑難解答