首页 > 解决方案 > 从字符串 SQL Server 解析列表

问题描述

我一直在使用这个函数来解析字符串列表;有没有更有效的方法来做到这一点?

这是为了解析具有多个值的字符串。

这就是我使用该功能的方式

select * 
from dbo.fn_getlistfromstring(''1,3,2,46,Mums the Order,bb'')

功能代码:

CREATE FUNCTION [dbo].[fn_getlistfromstring]
     (@string NVARCHAR(4000), 
      @separator NVARCHAR(50))
RETURNS @list TABLE
              (value NVARCHAR(200) collate database_default)
AS
BEGIN
    DECLARE @working NVARCHAR(4000), @value NVARCHAR(150)
    DECLARE @startpos INT, @endpos INT, @len INT, @seplen INT

    IF LTRIM(RTRIM(ISNULL(@string, ''))) <> '' 
    BEGIN
        SET @seplen = LEN(@separator)
        SET @working = LTRIM(RTRIM(ISNULL(@string, '')))

        IF CHARINDEX(@separator, @working, 1) <> 0 
        BEGIN
            SET @len = LEN(@working)
            SET @startpos = 1
      set @endpos = 1
      set @value = ''
      while @endpos < @len and @startpos < @len
        begin
        set @endpos = charindex(@separator, @working,@startpos)
        if @endpos = 0
          set @endpos = @len + 1
        set @value = ltrim(rtrim(substring( @working, @startpos, (@endpos - @startpos))))
        INSERT into @list (value) values (@value)
        set @startpos = @endpos + @seplen
        end
      end
    else -- only one
      INSERT into @list (value) values (@working)
    end

 RETURN 
END


GO

标签: sqlsql-serverfunctionparsing

解决方案


推荐阅读