替换特定表中每列中的字符串

时间:2018-05-24 08:17:28

标签: mysql sql

我有一个包含许多表的数据库表。我想搜索这些表中的每一个,找到哪个有字符串,然后用另一个表替换它。

我想要的是如果我找到一个包含此字符串的字段,然后将其更新为另一个字符串

我尝试过这个非常丑陋的查询:

UPDATE `myTable` 

SET
c1 = 'hello',
c2 = 'hello',
c3 = 'hello',
c4 = 'hello',
c5 = 'hello',
c6 = 'hello'

WHERE 
c1 = 'hi',
c2 = 'hi',
c3 = 'hi',
c4 = 'hi',
c5 = 'hi',
c6 = 'hi'

但这显然是错误的,因为如果c1'hello',那么它不会仅将c1更新为'hi',而是将所有字段更新为'hi'

1 个答案:

答案 0 :(得分:3)

您想要条件更新:

UPDATE tbl
SET c1 = CASE WHEN c1='hi' THEN 'hello' else c1 end
   ,c2 = CASE WHEN c2='hi' THEN 'hello' else c2 end
   -- and so on...
WHERE 'hi' IN (c1,c2,c3,c4,c5);