我目前有类似这样的东西:
我目前有类似这样的东西:
UPDATE table1 SET column1 = REPLACE(column1, 'abc', 'abc1') WHERE column1 LIKE '%abc%';
UPDATE table1 SET column1 = REPLACE(column1, 'def', 'def1') WHERE column1 LIKE '%def%';
我正在尝试将它们合并为一条单独的更新语句,尝试以下操作:
UPDATE table1
SET column1 =
CASE
WHEN column1 LIKE '%abc%' THEN REPLACE(column1, 'abc', 'abc1')
WHEN column1 LIKE '%def%' THEN REPLACE(column1, 'def', 'def1')
ELSE column1
END;
这是正确的做法吗?我对case/when不熟悉。谢谢!
LIKE
比MATCH ... AGAINST
慢,后者比相等比较慢。CASE WHEN
也很慢。话虽如此 - 如果您有一个经常访问的大表,则进行2个UPDATE可能更方便,因为表的锁定时间会更短。 - Mikhail