[SQLite] 1つのカラムデータを分割する方法

eyecatch SQLiteは、他のSQLデータベースと比べて機能が少ないので、SPLIT処理で苦しんでいる人も多いでしょう。 とりあえず、最低限出来ることを理解しておくことで、便利な応用もできるので、その基本テクニックを記載しておきます。

文字列を分割する方法

SELECT Table1.* FROM ( SELECT SUBSTR(string, 1,INSTR(menu_id, ".") -1) as str_1, SUBSTR(string, INSTR(menu_id, ".") +1) as str_2 FROM Table1 ) as Table1 Table1というテーブルに格納されている、stringカラムに、sample.txtのようなドット区切りの文字列がある場合、 2つの文字列に分割するSQL文です。 ただし、"a.b.c"のようにドットが2つ以上ある場合は、 「a」と「b.c」のように、最初のドットが区切りになります。

文字列を分割して別カラムに書き込む(update)する処理

UPDATE Table1 SET string_1 = ( SELECT SUBSTR(string, 1,INSTR(menu_id, ".") -1) as str_1 FROM Table1 ), string_2 = ( SELECT SUBSTR(string, INSTR(menu_id, ".") +1) as str_2 FROM Table1 ) WHERE ... レコード数の多いテーブルで実行するとめちゃくちゃ時間が掛かりますが、WHERE区でデータを絞り込んで少数で行えば、比較的効率的に分割格納できます。