PR

【図で分かる!】SQL Server 活用入門  テキストの分割・結合

高度なデータ処理
記事内に広告が含まれています。

データベースとExcelを連携させて利用していると、図のようにユーザーが入力した改行入りのデータを分割したり、逆に複数行のデータを改行で区切ってまとめて一つのセルに出力したいケースが出てきます。

改行区切りのテキストデータはデータの構造をシンプルにしつつ複数のデータを扱う場合に有効です。

また、複数行のテキストを改行区切りで1つにまとめのは、備考情報の集約などにも活用できます。

この記事では、そのような場合に役立つテクニックとして、Power Query と SQL Server それぞれにおける改行区切りのテキスト列の分割・結合方法を解説します。

これによりデータの分割・結合が自在にできるようになって、データ活用の幅が広がりますので、是非参考にしてみて下さい。

スポンサーリンク

SQL Server での改行区切りテキストの分割

SQL Server では、STRING_SPLIT 関数を使って、改行区切りのテキストを複数行に分割できます。

サンプルクエリ

SELECT Category,
       ISNULL(s.value, '') AS Item
FROM TableA
OUTER APPLY STRING_SPLIT(ISNULL(Item, ''), CHAR(10)) AS s;

解説

  • STRING_SPLIT(Item, CHAR(10)) を使用することで、列 Item の改行(`CHAR(10))で区切られた値を分割できます。
  • OUTER APPLY を使うことで、元の Category の値を保持しつつ、分割後のデータを展開できます。
  • ISNULL(Item, '') を指定することで、NULL の値がある場合も安全に処理できます。
  • ISNULL(s.value, '') を指定することで、空データの場合もエラーなく処理できます。

SQL Server での改行区切りテキストの結合

逆に、複数の行データを改行区切りの一つのテキストに結合する場合は、STRING_AGG 関数を使用します。

サンプルクエリ

SELECT
    Category,
    STRING_AGG(Item, CHAR(10)) AS Items
FROM TableA
GROUP BY Category;

解説

  • STRING_AGG(Item, CHAR(10)) を使用することで、Item 列のデータを CHAR(10)(改行)で結合できます。
  • GROUP BY Category によって、カテゴリごとにデータを集約できます。

Power Query での改行区切りテキストの分割

Power Query では、GUI 操作で簡単に改行区切りのデータを分割できます。

手順

  1. データの取得 から対象のデータを Power Query に読み込む。
  2. 分割したい列を選択。
  3. 列の分割 → 区切り記号による分割 を選択。
  4. 区切り記号として カスタム を選ぶ
  5. 分割の文字は改行とするため、「特殊文字を使用して分割」にチェック
  6. 「特殊文字を挿入」のプルダウンから改行を選んで区切り記号欄に入力
  7. 行 で分割するオプションを選択。
  8. OK をクリックすると、改行区切りのデータが複数行に展開される。

Power Query での改行区切りテキストの結合

Power Query の GUI では、グループ化や文字列の結合が難しいため、M 言語を使用して処理を行います。

サンプル M コード

let
    ソース = Excel.CurrentWorkbook(){[Name="TableA"]}[Content],
    グループ化 = Table.Group(ソース, {"Category"}, {{"結合データ", each Text.Combine([Item], "#(lf)"), type text}})

    in
    グループ化

解説

  • Table.Group を使って、Category 列ごとにデータをグループ化します。
  • Text.Combine([Item], "#(lf)") を使って、Item 列のデータを改行(#(lf))で結合します。
  • type text を指定することで、適切なデータ型を保持します。

まとめ

この記事では改行区切りのテキスト列を分解したり、逆に複数行のテキストデータを1つにまとめてしまう方法を、Power Query と SQL Server それぞれについて紹介しました。

小規模な単位でのデータ管理では厳格なデータ構造より、こういった簡易な方法でのデータを管理の方が効率的でタイムリーな運用が可能です。

是非、ご自分の業務データ管理に活かしてみて下さい。

タイトルとURLをコピーしました