MySQL 在 where 子句中使用带有子索引的严格模式

MySQL using Strict Mode with subindex in where clause

在严格模式下使用 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' or 'E' 是一个布尔表达式,它被视为一个整数。因此,有关将值转换为数字的错误。

尝试使用 not in 代替:

WHERE SUBSTRING_INDEX(Something, ':', -1) NOT IN ('C', 'E')