MySQL查询异常

标签 mysql

我偶然遇到了一个独特的问题

但在此之前我想向您展示一个表格结构

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/

相关文章:

mysql - 在mysql中使用INDEXES最大的好处是什么?

Mysql DELETE 先查询该行

mysql - 表是否可能大于文件系统的最大文件大小?

php - 无限 PHP while 循环

mysql - @Never 事务属性非常慢

c# - 更改 gridview 内下拉菜单的日期格式

python - 使用Python加载数据到Mysql

php - 如何在数据库中进行多个复选框搜索值并将其显示在同一页面上

sql - 使用具有一对多关系的连接来最小化 SQL 查询

php - 第 4 行警告 : mysql_result(): supplied argument is not a valid MySQL result resource in (. ..)