SQL SERVER 擷取多個分隔符中指定第幾個分隔符的前邊的內容
阿新 • • 發佈:2018-12-16
又是一個難懂的標題,上例子吧,比如一個字串,‘abc,1344,343,13as,33,343’,這個字串都是用','分隔的,現在想擷取第四個逗號前邊所有的內容,方法如下:
CREATE FUNCTION [dbo].[Get_StrArrayStrOfIndex] ( @str VARCHAR(1024), --要分割的字串 @split VARCHAR(10), --分隔符號 @index INT --取第幾個元素 ) RETURNS VARCHAR(1024) AS BEGIN DECLARE @location INT; DECLARE @start INT; DECLARE @next INT; DECLARE @seed INT; SET @str = LTRIM(RTRIM(@str)); SET @start = 1; SET @next = 1; SET @seed = LEN(@split); SET @location = CHARINDEX(@split, @str); WHILE @location <> 0 AND @index >= @next BEGIN SET @start = @location + @seed; SET @location = CHARINDEX(@split, @str, @start); SET @next = @next + 1; END; RETURN SUBSTRING(@str, 0, @start - 1); END;
測試如下:
DECLARE @str NVARCHAR(max)='abc,1344,343,13as,33,343'
SELECT dbo.[Get_StrArrayStrOfIndex](@str,',',4)
結果: