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)

       结果:

SQL SERVER 截取多个分隔符中指定第几个分隔符的前边的内容_第1张图片

你可能感兴趣的:(SQL,SERVER常用方法,SQL,SERVER常见问题,SQL,SERVER常用写法,多分隔符,截取分隔符前边所有内容)