1

我需要为带有两个字符的拆分字符串编写函数。例如:“海得拉巴 Hyd,测试”

在上面的字符串中,我需要用空格(“”)和逗号(,)吐出,输出结果将保存在表格中

The oputput should be:
Hyderabad
Hyd,Test
Hyd
Test


CREATE function dbo.SplitString   
    (  
        @str nvarchar(4000),   
        @separator char(1)  
    )  
    returns table  

    AS      
    return (  
        with tokens(p, a, b) AS (  
               select   
                1,   
                1,   
                charindex(@separator, @str)  
            union all  
            select  
                p + 1,   
                b + 1,   
                charindex(@separator, @str, b + 1)  
            from tokens  
            where b > 0  
        )  

        select  
            p-1 SNO,  
            substring(  
                @str,   
                a,   
                case when b > 0 then b-a ELSE 4000 end)   
            AS word  
        from tokens  
      )  

请帮忙......

提前致谢..

4

2 回答 2

2

对于您显示的结果,您不需要的拆分功能。只是一个普通的,需要一个列表和一个分隔符。

SELECT
  second_split.*
FROM
  dbo.fn_split(@myList, ' ')   AS first_split
CROSS APPLY
(
  SELECT first_split.item
  UNION
  SELECT item FROM dbo.fn_split(first_split.item, ',')
)
  AS second_split

first_split 将是Hyderabadand Hyd,Test

第二个拆分将是... - HyderabadUNIONHyderabad这只是Hyderabad
- 加上Hyd,TestUNIONHydTest

给...

  • Hyderabad
  • Hyd,Test
  • Hyd
  • Test
于 2012-05-16T19:49:28.787 回答
0

有几种方法可以做到这一点。您可能想要探索创建 SQL CLR,因为它可能会更快、更容易地进行您正在寻找的拆分。

http://msdn.microsoft.com/en-us/library/ms254498(v=vs.100).aspx

这是一篇博客文章,可能也会有所帮助。

http://dataeducation.com/faster-more-scalable-sqlclr-string-splitting/

于 2012-05-16T19:53:26.297 回答