我想更新一个包含12,43,433之类字符串的列,我只想用另一个数字替换43,即54,以便列值变为12,54,433。
我该怎么做?
答案 0 :(得分:2)
你可以像这样使用REPLACE()函数:
UPDATE YourTable a
SET a.StringColumn = REPLACE(a.StringColumn,',43,',',54,')
WHERE a.StringColumn like '%,43,%'
答案 1 :(得分:1)
将列表存储为字符串是非常坏主意。 SQL具有用于存储列表的出色数据结构。它被称为表,而不是字符串。存储列表的正确方法是使用联结表。
有时我们会遇到其他人非常糟糕的设计决策。如果是这样,你可以这样做:
update t
set col = trim(replace(',' || col || ',', ',43,', ',54,'), ',')
where ',' || col || ',' like '%,43,%';
注意:
当你弄清楚如何修复数据结构时,使用这样的查询应该是一个权宜之计。