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。
我有一个 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。