SQL Server 2016でString_Split()を使用して文字列を分割します

SQL006

STRING_SPLITステージテーブルで使用し、結果を別のテーブルにインポートする必要があります。

ステージテーブル:

DECLARE @stage TABLE(ID INT, Code VARCHAR(500))

INSERT INTO @stage
    SELECT 1, '123_Potato_Orange_Fish' 
    UNION ALL
    SELECT 2, '456_Tomato_Banana_Chicken' 
    UNION ALL
    SELECT 3, '789_Onion_Mango_Lamb' 

ファイナルテーブル:

DECLARE @Final TABLE
               (
                    ID INT, 
                    code VARCHAR(500),
                    Unit VARCHAR(100),
                    Vegetable VARCHAR(100),
                    Fruit VARCHAR(100),
                    Meat VARCHAR(100)
               )

SSIS実行タスクを使用して、ステージテーブルデータを変換し、ファイナルテーブルに挿入しています。ステージテーブルのコード列は文字列で、区切り文字には「_」が使用されます。以下に示すように、文字列を分離してファイナルテーブルを表示する必要があります

ID        code                  Unit    Vegetable   Fruit   Meat
------------------------------------------------------------------
1   123_Potato_Orange_Fish      123      Potato    Orange   Fish
2   456_Tomato_Banana_Chicken   456      Tomato    Banana   Chicken
3   789_Onion_Mango_Lamb        789      Onion     Mango    Lamb

次にString_Split()示すように、SQL Server2016の組み込み関数を使用しようとしています

SELECT 
    ID,
    Code, f.value AS Vegetable 
FROM 
    @stage AS s
CROSS APPLY
    (SELECT 
         value,
         ROW_NUMBER() OVER(PARTITION BY s.ID ORDER BY s.ID) AS rn 
     FROM
         String_Split(s.Code, '_')) AS f
WHERE 
    s.ID = 1 AND f.rn = 2

ただし、ステージデータには数百万のレコードが含まれているため、一度に1つの文字列しか分割されません。コード列のすべての文字列を分割し、それぞれの列に格納する必要があります。

注:一時テーブルは使用しません。

ありがとう

userfl89

派生列を追加し、フォーマットがリストしたものと一致していると仮定して、TOKEN関数を使用して"_"、各文字列の区切り文字と位置に基づいて入力を分割します。ここから、各出力を適切な宛先列にマップできます。以下の3つのステートメントは、質問のサンプルデータに基づいてコード列を分割します。TOKENの出力データ型はDT_WSTR(Unicode)であることに注意してくださいUnicode以外のデータが必要な場合は、にキャストバックする必要があります。DT_STRこれは、(DT_STR,50,1252)各ステートメントの前に追加(必要に応じて長さを調整)することで、同じ派生列内で実行することもできます。

  • TOKEN(Code,"_",1)
  • TOKEN(Code,"_",2)
  • TOKEN(Code,"_",3)

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

SQL Server2016でopenjsonを使用してJSON文字列を比較します

分類Dev

SQL Server を使用して文字列をテーブルに分割します

分類Dev

SQL Server2016でSTRING_SPLITと集計カウントでWhereINを使用する

分類Dev

SQL Serverで結合を使用して列として選択するコンマ区切りの文字列を分割しますか?

分類Dev

SQL Server2016の文字列を解析します

分類Dev

SQL Server:STRING_SPLIT()は計算列になります

分類Dev

SQL Server2016のjson文字列に新しい値を追加します

分類Dev

null間の区切り文字を使用して、多くの列の値を連結またはマージします-SQL Server2016以前

分類Dev

Alternative for String_split in SQL Server

分類Dev

SQL Server 2016 FOR JSON PATHは、caseステートメントを使用すると、配列ではなく文字列を返します

分類Dev

SQL Server 2016を使用してvarchar列から個々の値を抽出する方法はありますか?

分類Dev

SQL Server:複数の文字列をそれぞれ1行に分割します

分類Dev

SQL Server2016を使用してXMLを解析する

分類Dev

SQL Serverで単語を壊さずに、長さnvarchar(120)の文字列を分割します

分類Dev

SQL Server SELECTINTOを使用してNULL不可の列を作成します

分類Dev

SQL Server2016でxqueryを使用してxmlをクエリする

分類Dev

SQL Server 2016は、json配列のどこを選択します

分類Dev

SQL Server 2016の関数または分析関数を使用して列にインデックスを作成できますか?

分類Dev

string_split列の結果をテーブルSQLに結合します

分類Dev

SQL Server Management Studio2008ですべてのテーブルを検索して文字列を検索します

分類Dev

WHERE句で大文字と小文字を区別する検索を行う方法(SQL Serverを使用しています)?

分類Dev

SQL Server 2016、無効なオブジェクト名「STRING_SPLIT」

分類Dev

SQL Server2016のSTRING_SPLITからの位置の戻り値

分類Dev

SQL Server2016のSTRING_SPLITからの位置の戻り値

分類Dev

SQL Server T-SQLは、結合のために文字列を一時テーブルに分割します

分類Dev

SQL Serverは、正規表現を使用して文字列から整数を抽出します

分類Dev

SQL Server2008を使用してselectステートメントの文字列を確認します

分類Dev

SQL Serverを使用して文字列をコンマで区切る方法は?

分類Dev

SQL Server:関数を使用して新しい列を計算します

Related 関連記事

  1. 1

    SQL Server2016でopenjsonを使用してJSON文字列を比較します

  2. 2

    SQL Server を使用して文字列をテーブルに分割します

  3. 3

    SQL Server2016でSTRING_SPLITと集計カウントでWhereINを使用する

  4. 4

    SQL Serverで結合を使用して列として選択するコンマ区切りの文字列を分割しますか?

  5. 5

    SQL Server2016の文字列を解析します

  6. 6

    SQL Server:STRING_SPLIT()は計算列になります

  7. 7

    SQL Server2016のjson文字列に新しい値を追加します

  8. 8

    null間の区切り文字を使用して、多くの列の値を連結またはマージします-SQL Server2016以前

  9. 9

    Alternative for String_split in SQL Server

  10. 10

    SQL Server 2016 FOR JSON PATHは、caseステートメントを使用すると、配列ではなく文字列を返します

  11. 11

    SQL Server 2016を使用してvarchar列から個々の値を抽出する方法はありますか?

  12. 12

    SQL Server:複数の文字列をそれぞれ1行に分割します

  13. 13

    SQL Server2016を使用してXMLを解析する

  14. 14

    SQL Serverで単語を壊さずに、長さnvarchar(120)の文字列を分割します

  15. 15

    SQL Server SELECTINTOを使用してNULL不可の列を作成します

  16. 16

    SQL Server2016でxqueryを使用してxmlをクエリする

  17. 17

    SQL Server 2016は、json配列のどこを選択します

  18. 18

    SQL Server 2016の関数または分析関数を使用して列にインデックスを作成できますか?

  19. 19

    string_split列の結果をテーブルSQLに結合します

  20. 20

    SQL Server Management Studio2008ですべてのテーブルを検索して文字列を検索します

  21. 21

    WHERE句で大文字と小文字を区別する検索を行う方法(SQL Serverを使用しています)?

  22. 22

    SQL Server 2016、無効なオブジェクト名「STRING_SPLIT」

  23. 23

    SQL Server2016のSTRING_SPLITからの位置の戻り値

  24. 24

    SQL Server2016のSTRING_SPLITからの位置の戻り値

  25. 25

    SQL Server T-SQLは、結合のために文字列を一時テーブルに分割します

  26. 26

    SQL Serverは、正規表現を使用して文字列から整数を抽出します

  27. 27

    SQL Server2008を使用してselectステートメントの文字列を確認します

  28. 28

    SQL Serverを使用して文字列をコンマで区切る方法は?

  29. 29

    SQL Server:関数を使用して新しい列を計算します

ホットタグ

アーカイブ