SQlite查询更新列并替换值

时间:2016-02-18 11:21:12

标签: sql sqlite

我想更新一个包含12,43,433之类字符串的列,我只想用另一个数字替换43,即54,以便列值变为12,54,433。

我该怎么做?

2 个答案:

答案 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,%';

注意:

  • 无论字符串中出现“43”(包括在开头和结尾),这都有效。
  • 这样可以保持字符串的格式在开头和结尾没有逗号。
  • 这只会尝试更新列表中包含特定元素的行。

当你弄清楚如何修复数据结构时,使用这样的查询应该是一个权宜之计。