非常奇怪"截断错误的INTEGER值" - 仅在UPDATE时出错

时间:2018-01-02 13:44:32

标签: mysql

这有效:

SELECT IF(TRUE, 'a', 'b') IS NOT NULL;

以下失败,错误:

  

截断错误的INTEGER值:' a':

CREATE TABLE tmp(col1 CHAR(10));
UPDATE tmp SET col1 = col1 WHERE IF(TRUE, 'a', 'b') IS NOT NULL;

为什么?

此外,在执行IS NULL而不是IS NOT NULL时 - 它可以正常工作。即,有效

UPDATE tmp SET col1 = col1 WHERE IF(TRUE, 'a', 'b') IS NULL;

此外,在运行SELECT查询时,也可以

SELECT IF(TRUE, 'a', 'b') IS NOT NULL;

似乎该问题仅适用于UPDATE,且仅适用于NOT NULL

怎么回事?

更新:这可能是MySQL 5.7中的新问题。我测试了MySQL 5.5并且它有效,但确实报告了相同的问题作为警告: MySQL 5.5

0 个答案:

没有答案