在严格模式下使用 MYSQL 5.5,我得到:
Error Code: 1292
Truncated incorrect DOUBLE value: 'C'
使用下面的 SQL:
INSERT INTO table.t2 SELECT Something FROM table.t3
WHERE SUBSTRING_INDEX(Something,":",-1) NOT IN ("C","E")
“Something”列中的数据可能如下所示:
2131:2134
2132:2134:C
2133:2134:C
2134:2134:E
2135:2134:E
2136:2134
2137:2134
2138:2134
2139:2134
我知道我可以删除严格模式,但想解决这个问题。这是我第一次 在尝试解决此问题时使用“cast”...-1,给出整数或字符串
最佳答案
where
子句存在问题。表达式'C' 或'E'
是一个 bool 表达式,被视为整数。因此,将值转换为数字时会出现错误。
尝试使用 not in
代替:
WHERE SUBSTRING_INDEX(Something, ':', -1) NOT IN ('C', 'E')
关于MySQL 在 where 子句中使用带有子索引的严格模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29054318/