SQLite REPLACE関数とSUBSTR関数を使って文字列の一部を置き換える
SQLiteで文字列の一部を置き換える方法
REPLACE関数は、指定された文字列を別の文字列で置き換える関数です。構文は以下の通りです。
REPLACE(text, old_text, new_text)
text
: 置換対象の文字列
例えば、以下のクエリは、name
列の"John"を"Jane"に置き換えます。
UPDATE users
SET name = REPLACE(name, 'John', 'Jane');
また、ワイルドカードを使って、複数の文字列を置き換えることもできます。例えば、以下のクエリは、name
列のすべての"o"を"a"に置き換えます。
UPDATE users
SET name = REPLACE(name, 'o', 'a');
SUBSTR関数と||演算子を使う
SUBSTR関数は、文字列の一部を切り出す関数です。||演算子は、文字列を連結する演算子です。これらの関数と演算子を使って、文字列の一部を置き換えることができます。
UPDATE users
SET name = SUBSTR('A', 1, 1) || SUBSTR(name, 2);
UPDATE users
SET name = SUBSTR(name, 1, LENGTH(name) - 1) || '!';
SQLiteで文字列の一部を置き換える方法はいくつかあります。それぞれの特徴を理解して、状況に合わせて使い分けましょう。
REPLACE関数を使う
-- テーブル作成
CREATE TABLE users (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT
);
-- データ挿入
INSERT INTO users (name) VALUES ('John Doe'), ('Jane Doe');
-- 文字列の一部を置き換える
UPDATE users
SET name = REPLACE(name, 'Doe', 'Smith');
-- 結果確認
SELECT * FROM users;
-- 結果
-- id | name
-- -- | --
-- 1 | John Smith
-- 2 | Jane Smith
SUBSTR関数と||演算子を使う
-- テーブル作成
CREATE TABLE users (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT
);
-- データ挿入
INSERT INTO users (name) VALUES ('John Doe'), ('Jane Doe');
-- 文字列の一部を置き換える
UPDATE users
SET name = SUBSTR('A', 1, 1) || SUBSTR(name, 2);
-- 結果確認
SELECT * FROM users;
-- 結果
-- id | name
-- -- | --
-- 1 | Aohn Doe
-- 2 | Aane Doe
補足
UPDATE users
SET name = 'Jane'
WHERE name = 'John';
また、CASE式を使って、条件によって異なる文字列に置き換えることもできます。
例えば、以下のクエリは、gender
列が"male"であるユーザーの名前を"Mr."で、gender
列が"female"であるユーザーの名前を"Ms."で置き換えます。
UPDATE users
SET name = CASE gender
WHEN 'male' THEN 'Mr.'
WHEN 'female' THEN 'Ms.'
END;
SQLiteで文字列の一部を置き換えるその他の方法
LIKE演算子は、文字列のパターンマッチングに使用できる演算子です。この演算子を使って、特定のパターンに一致する文字列を置き換えることができます。
UPDATE users
SET name = 'Jane'
WHERE name LIKE 'John%';
UPDATE users
SET name = '***'
WHERE name REGEXP '[0-9]+';
UPDATE文のSET句で直接文字列を編集することで、文字列の一部を置き換えることもできます。
UPDATE users
SET name = SUBSTR(name, 1, LENGTH(name) - 1) || '!';
補足
上記は基本的な例です。実際の業務では、もっと複雑な条件で文字列を置き換える必要がある場合もあります。その場合は、WHERE句やCASE式を使って条件を指定することができます。
sql sqlite