我有这个简单的查询
SELECT *
FROM `book`
WHERE `BookID` = '7u'
LIMIT 1
我期待空结果但我看到一个结果,书 id = 7。BookID 是自动递增的。为什么查询忽略'u'字符?
因为7u
不是数字,所以显然 mysql 忽略了u
.
也许您正在考虑一些使用后缀来限定数字类型的高级编程语言?在 C 派生语言中,7u 将是一个值为 7 的无符号整数。
仅仅因为两个原因:
可能只有一个记录。
您使用的是 LIMIT 1。它只显示输出中的一条记录。所以使用限制 5 或 2。
mysql 将字符串视为 7u,因此当您尝试执行此操作时,它会在字符串中进行转换,但 mysql 未处于严格模式,因此它将字符串转换为整数,因为您的 id 是整数,并且其 7u 的舍入变为 7,这就是它显示的原因一条记录尝试不带引号 7u 而不是 '7u' 然后它给出错误