MySQL通过id返回错误的搜索结果

时间:2015-07-07 10:07:46

标签: mysql

我有一个简单的用户表'userid'和'username'字段。请检查以下命令:

Select * from users where userid = '5'; --returns me 1 result - Right

Select * from users where userid = '5 shiv'; --returns me 1 result - Wrong

为什么第二个查询仍然会返回一个结果。可能是什么问题呢?这是引擎或MySQL本身的问题吗?

2 个答案:

答案 0 :(得分:0)

6 计算结果为5并在5.之后跳过你的字符串部分。你的用户标识记录为5。

编辑:将表达式转换为varchar

'5 shiv'

<强> Refer here for more

答案 1 :(得分:0)

这里的问题是MySQL在进行比较时正在从字符串到int进行隐式转换。例如:

SELECT * FROM cloths WHERE id = "5 shiv"

使转换显式化,这就是MySQL正在做的事情:

SELECT * FROM cloths WHERE id = CAST("5 shiv" as int)

相反,您要做的是将id转换为字符串,然后进行比较。解决方案只是:

SELECT * FROM cloths WHERE CAST (id as varchar(10)) = "5 shiv"

您也可以通过参考链接查看: Doc link