具有多个定界符的子字符串

时间:2018-10-04 21:34:12

标签: sql substring delimiter-separated-values

我有一个看起来像这样的字符串:

/Company/Business 1/Business 2/Business 3/Business 4...

我正在寻找创建一个仅提取业务2信息的子字符串

有人可以帮忙吗?我遇到了问题,因为业务3和业务4中的信息长度不同

1 个答案:

答案 0 :(得分:0)

以下使用SQL查询的解决方案:

我创建了SQL函数以拆分并按记录位置进行搜索,

  

函数参数是输入字符串,定界符char和记录编号

SQL函数-

CREATE FUNCTION [dbo].[SplitString]  ( 
    @string NVARCHAR(MAX), 
    @delimiter CHAR(1),     @record int  )  RETURNS @output TABLE(splitdata NVARCHAR(MAX)  )  BEGIN 
    DECLARE @start INT, @end INT, @rownumber INT = 0 
    SELECT @start = 1, @end = CHARINDEX(@delimiter, @string) 
    WHILE @start < LEN(@string) + 1     BEGIN       SET @rownumber = @rownumber + 1
        IF @end = 0  
            SET @end = LEN(@string) + 1

        IF(@rownumber = @record)        BEGIN           INSERT INTO @output (splitdata)             VALUES(SUBSTRING(@string, @start, @end - @start))       END
        SET @start = @end + 1 
        SET @end = CHARINDEX(@delimiter, @string, @start)

    END 
    RETURN  END

选择查询-

SELECT * FROM dbo.SplitString('/Company/Business 1/Business 2/Business 3/Business 4','/',4)

结果:

  

业务2