1. 程式人生 > >SQL SERVER 擷取多個分隔符中指定第幾個分隔符的前邊的內容

SQL SERVER 擷取多個分隔符中指定第幾個分隔符的前邊的內容

       又是一個難懂的標題,上例子吧,比如一個字串,‘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)

       結果: