【问题标题】:MySQL using Strict Mode with subindex in where clauseMySQL 在 where 子句中使用带有子索引的严格模式
【发布时间】:2015-05-17 05:43:50
【问题描述】:

在严格模式下使用 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,给出整数或字符串

【问题讨论】:

  • 您应该在insert 语句中包含这些列。

标签: mysql sql strict


【解决方案1】:

where 子句有问题。表达式'C' or 'E' 是一个布尔表达式,它被视为一个整数。因此,将值转换为数字的错误。

尝试改用not in

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

【讨论】:

  • 在这种情况下,列出insert 中的列。这是我的第一个怀疑,但后来我注意到格式错误的 where 子句。
  • 喜欢什么?插入没有给出问题......或者,它是否处于严格模式。
  • @Merlin:目标列/列是什么类型?您选择的Something 是什么类型?类型匹配吗?
  • 类型完全匹配...当我删除 where 子句时,插入完美。但是,我需要 where 子句。
猜你喜欢
  • 2010-10-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-28
  • 1970-01-01
  • 2020-09-16
  • 1970-01-01
相关资源
最近更新 更多