根据条件执行UPDATE

时间:2017-04-30 16:03:44

标签: mysql

MySQL是否有办法插入一个条件,根据该条件执行整个UPDATE查询?我知道您可以在查询本身中使用IF或CASE来插入不同的值,但我在谈论这种情况:

IF(条件为真)UPDATE ...

假设我想验证数据并根据结果执行UPDATE(我知道这是一个坏主意,数据验证应该以脚本方式完成,我只是回顾理论上的可能性)。如下所示,我在regexp上测试一个值来检查它是否是数值:

执行UPDATE:

IF ( "12345" REGEXP "[0-9]+" ) UPDATE table SET numdata = "12345" WHERE...;

UPDATE未执行:

IF ( "a1234" REGEXP "[0-9]+" ) UPDATE table SET numdata = "a1234" WHERE...;

谢谢,

佩雷斯

2 个答案:

答案 0 :(得分:0)

只需将REGEXP放在WHERE子句中:

DECLARE mynumdata varchar(10) = "a1234";
UPDATE table SET numdata = mynumdata
WHERE @numdata REGEXP "[0-9]+"
  AND <other update conditions>;

答案 1 :(得分:0)

执行此操作的一种方法是将条件添加到WHERE子句中。

所以,如果你原来有

UPDATE table SET numdata = "a1234" WHERE id=1

你可以把它写成

UPDATE table SET numdata = "a1234" WHERE id=1 AND "1234" REGEXP "[0-9]+"