[SQLite] 1つのカラムデータを分割する方法
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区でデータを絞り込んで少数で行えば、比較的効率的に分割格納できます。