如何在where条件下阻止mysql将字符串转换为整数

5n0oy7gb  于 2021-06-19  发布在  Mysql
关注(0)|答案(1)|浏览(300)

mysql版本:5.7.21。
我有一张table叫 my_database.my_table 有一个字段叫做 my_code 是那种类型的 VARCHAR(25) .
我的表中有以下条目:

my_code
'1234'
'1234-1'
'1234-2'

当我跑的时候 SELECT my_code FROM my_database.my_table WHERE my_code = 1234; 它将返回所有3条记录,而不是只返回带有 my_code'1234' .
我相信这是因为 '1234-1' 以及 '1234-2' 被投给 1234 因此通过了我的where条件。
我知道有一些方法可以解决这个问题,比如 CONCAT(1234, '') ,但我想知道是否有一种方法可以阻止这种情况的发生。
编辑:
澄清各地缺乏单引号 1234 在我的示例中,查询是有意的。这是一个关于如何在不修改查询中的值的情况下防止mysql的默认强制转换行为的问题。

oxcyiej7

oxcyiej71#

当运算符与不同类型的操作数一起使用时,会进行类型转换以使操作数兼容。有些转换是隐式进行的。例如,mysql会根据需要自动将数字转换为字符串,反之亦然。
https://dev.mysql.com/doc/refman/5.7/en/type-conversion.html

相关问题