1

2文字の分割文字列の関数を書く必要があります。例:「HyderabadHyd、Test」

上記の文字列では、スペース( "")とコンマ(、)を使用して唾を吐く必要があり、出力結果はテーブルに保持されます

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  
      )  

Plzは助けてくれます.....

前もって感謝します..

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ます。

2 番目の分割は次のようになります... -単なるHyderabadUNION - プラスUNIONとHyderabadHyderabad
Hyd,TestHydTest

与える...

  • 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 に答える