数据库更新查询?

时间:2017-02-05 08:27:06

标签: mysql sql database stored-procedures oracle10g

假设一个表是这样的

ID            Desc
1          I am a boy
2          I am a boy xyz
3          I am a boy abc
4          xyzab I am a boy
5          life is beautiful
6          blank

现在我的要求就是连续发现“我是个男孩”这个短语会被删除,但部分的其余部分将保持不变。如果那个短语不在那里就没有变化。因此对于查询后的上表,它将如下所示

ID          Desc
1          <blank>
2           xyz
3           abc
4          xyzab
5         life is beautiful
6          blank

2 个答案:

答案 0 :(得分:2)

您可以尝试以下替换。请注意,我将替换后的描述列包装,以删除任何删除短语I am a boy的空格。

UPDATE yourTable
SET Desc = TRIM(REPLACE(Desc, 'I am a boy', ''))
WHERE Desc LIKE '%I am a boy%'

WHERE子句将UPDATE操作限制为仅包含男孩字符串的记录。在这种特殊情况下,它可能是多余的。但通常添加WHERE子句可以避免在没有更改时修改记录,从而节省时间。此外,一般情况下(虽然不是这里),{where {1}}子句甚至可以在where列具有索引时加速更新。

答案 1 :(得分:0)

首先,最好将列名 Desc 更改为其他名称,因为它是保留关键字。看看this

以下查询可以解决您的问题。我在此处将列名更改为Dsc

UPDATE mytable
SET Dsc = REPLACE(Dsc, 'I am a boy', '');

SQLFiddle