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...;
谢谢,
佩雷斯
答案 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]+"