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 サイトの他の関連記事を参照してください。