ホームページ > データベース > mysql チュートリアル > Common Table Expression (CTE) を使用して SQLite でカンマ区切り値を分割するにはどうすればよいですか?

Common Table Expression (CTE) を使用して SQLite でカンマ区切り値を分割するにはどうすればよいですか?

Barbara Streisand
リリース: 2024-12-31 22:01:17
オリジナル
723 人が閲覧しました

How Can I Split Comma-Separated Values in SQLite Using a Common Table Expression (CTE)?

SQLite でのカンマ区切り値の分割: 共通テーブル式 (CTE) アプローチ

データ管理の領域では、カンマ区切り値 (CSV) の分割が頻繁に発生します。人気の軽量データベース システムである SQLite の場合、専用の substring() 関数がないため、このタスクは他の SQL 環境ほど単純ではない可能性があります。ただし、Common Table Expression (CTE) を利用する代替ソリューションがあります。

次のシナリオを考えてみましょう。カンマ区切りの文字列を含む「Category」列を持つテーブルがあり、抽出したいと考えています。各文字列の個々の値を個別の行に格納します。

CTE は、単一のクエリ内でさらに参照および操作できる、名前付きの一時的な結果セットです。この例では、CTE を使用して CSV 文字列を再帰的に分割し、抽出された値を新しいテーブルに保存できます。クエリは次のとおりです。

WITH split(word, csv) AS (
  -- 'initial query'
  SELECT
    '',
    'Auto,A,1234444'||',' -- terminate with ',' indicating csv ending
  -- 'recursive query'
  UNION ALL SELECT
    substr(csv, 0, instr(csv, ',')), -- each word contains text up to next ','
    substr(csv, instr(csv, ',') + 1) -- next recursion parses csv after this ','
  FROM split -- recurse
  WHERE csv != '' -- break recursion once no more csv words exist
)
SELECT
  word
FROM
  split
WHERE
  word!=''; -- filter out 1st/last rows
ログイン後にコピー

このクエリは、instr() 関数を使用して CSV 文字列を分割し、最初のカンマを見つけ、カンマの前の部分文字列を抽出し、それ自体を再帰的に呼び出して残りの部分のプロセスを繰り返します。文字列の。カンマがなくなると再帰は終了します。

結果の出力には、元の CSV 文字列から抽出された個々の値が行に編成されて含まれます。

Auto
A
1234444
ログイン後にコピー

このアプローチは、強力で強力な機能を提供します。 SQLite でカンマ区切り値を分割する柔軟な方法であり、データ操作タスクに貴重なツールとなります。

以上がCommon Table Expression (CTE) を使用して SQLite でカンマ区切り値を分割するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート