Sqlite:将分号分隔的正值转换为负值

Sqlite: convert semicolon separated positive values to negative values

我有一个 SQLite table 看起来像这样:

name value
Julia 43
Julia 12;54
Julia 10;7;32
Julia NULL
Julia 11;42

所以我的目标是将 value 列中的所有值乘以 -1。当我 运行 这样的事情时:

UPDATE table
SET value = value * -1
WHERE name = 'Julia' 
  AND value IS NOT NULL;

这导致了这个 table:

name value
Julia -43
Julia -12
Julia -10
Julia NULL
Julia -11

第二个和第三个分号分隔的值丢失。但是输出 table 应该是这样的:

name value
Julia -43
Julia -12;-54
Julia -10;-7;-32
Julia NULL
Julia -11;-42

对于此示例数据,您可以将所有出现的 ';' 替换为 ';-' 并在 value:

的开头连接一个 '-'
UPDATE tablename
SET value = '-' || REPLACE(value, ';', ';-')
WHERE name = 'Julia' AND value IS NOT NULL;

参见demo