MySQL SELECT查询返回整数和整数+字符串

时间:2014-08-20 05:08:40

标签: php mysql sql

我的表名students

uid  |  name
-----+-------
10   |  John
11   |  Smith

**数据类型:**

uid  int(11)
name varchar(256)

我的查询:

SELECT name FROM students WHERE uid = '10'

返回John

我的第二个问题:

SELECT name FROM students WHERE uid = '10someChar'

返回John

为什么第二个查询返回John?

2 个答案:

答案 0 :(得分:4)

uid列是整数,并且在where子句中传递的值首先被强制转换为整数...并且大多数整数转换算法只抓取它们可以在字符串中找到的第一组数字(并忽略任何内容)之后不匹配)...因此它找到10并忽略其余的

答案 1 :(得分:1)

MySQL会根据需要自动将数字转换为字符串,反之亦然。

也可以使用CAST()函数将数字转换为字符串。

  

Type Conversion

读一读。

MySQL曾试图返回某些东西 - 即使它是错误的类型,他也会自动投射。

您应该在PHP中过滤以验证您的业务规则。

Postgresql应该抛出异常