使用一个简单的查询替换 SQLite 数据库所有列中的字符串

Replace string in all columns of a SQLite database using one simple query

是否可以使用一个简单的查询来替换 SQLite 数据库所有列中的给定字符串?

假设我有一个 table 包含四列姓名、年龄、收入和朋友:

+------+-----+--------+---------+
| name | age | income | friends |
+------+-----+--------+---------+
| John | 20  | 10     | 0       |
+------+-----+--------+---------+
| Jane | 25  | 20     | 0       |
+------+-----+--------+---------+
| June | 20  | 40     | 20      |
+------+-----+--------+---------+

并且我想使用一个简单的查询将整个 table 中的所有“20”实例替换为“40”。类似于:

UPDATE table SET ALL-COLUMNS = 40 WHERE ALL-COLUMNS = 20

这可以用SQLite实现吗?还是我必须为每一列创建一个查询?

UPDATE table SET age = 40 WHERE age = 20
UPDATE table SET income = 40 WHERE income = 20
UPDATE table SET friends = 40 WHERE friends = 20

使用三个 UPDATE 语句是最简单的解决方案。

通过使用 CASE expressions:

可以使用单个 UPDATE 语句
UPDATE MyTable
SET age     = CASE age     WHEN 20 THEN 40 ELSE age     END,
    income  = CASE income  WHEN 20 THEN 40 ELSE income  END,
    friends = CASE friends WHEN 20 THEN 40 ELSE friends END
WHERE age = 20
   OR income = 20
   OR friends = 20