我偶然遇到了一个独特的问题
但在此之前我想向您展示一个表格结构
td_类别
|---------------------------------------------------------------------|
| category_id | category_title | category_slug | p_cid |
|---------------------------------------------------------------------|
| 1 | Shirts | 1-Shirts | 0 |
|---------------------------------------------------------------------|
| 2 | Jeans | 2-Jeans | 0 |
|---------------------------------------------------------------------|
现在,
category_id is INT and auto-increment value
category_title is VARCHAR
category_slug is VARCHAR
现在我正在做的是,我错误地写了一个查询
SELECT * FROM td_category WHERE category_id = '2-Jeans'
它没有给我任何错误,而是显示了第二个元组
不是应该抛出错误吗?
请问谁能澄清一下吗?
最佳答案
mysql 对 int
数据类型执行隐式转换,因此 '2-Jeans' 被视为 2-0(因为 Jeans 不是 int 类型,为了兼容性默认为 0,如文档 here )
因此解析器解释的最终查询如下:
SELECT * FROM td_category WHERE category_id = 2;
关于MySQL查询异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24929334/