admin

防止mysql在where子句中将字符串强制转换为int

sql

我试图防止mysql将字符串转换为where子句中的int。

以下查询返回订单的正确行

SELECT delivery_name FROM orders WHERE orders_id = '985225'

以下查询还返回与将字符串强制转换为int相同的行,但我想完全阻止它返回该行(即,不强制转换为int的字符串并有效地说,这不能准确地被强制转换为int,因此请勿)。

SELECT delivery_name FROM orders WHERE orders_id = '985225a'

我希望这是有道理的,任何帮助将不胜感激!


阅读 180

收藏
2021-06-07

共1个答案

admin

您应该可以完全避免这种情况,但是如果您想要一种解决方法,可以在字符串的前面连接一个字符,例如:

SELECT delivery_name 
FROM orders 
WHERE CONCAT('a',orders_id) = CONCAT('a','985225a')
2021-06-07