MySQL 整型字段中查询字符串,返回了所有为0的结果

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL 整型字段中查询字符串,返回了所有为0的结果相关的知识,希望对你有一定的参考价值。

mysql中,在整型字段中查询字符串,返回了所有为0的结果,应该返回null或空。

例如表结构信息:

CREATE TABLE `t` (
  `name` char(20) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `id` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci

表中数据:

mysql> select id from t;
+----+
| id |
+----+
|  0 |
|  0 |
|  1 |
+----+

查询字符串a,返回了所有是0 的:

mysql> select id from t where id=‘a‘;
+----+
| id |
+----+
|  0 |
|  0 |
+----+

警告信息:

mysql> show warnings;
+---------+------+---------------------------------------+
| Level   | Code | Message                               |
+---------+------+---------------------------------------+
| Warning | 1292 | Truncated incorrect DOUBLE value: ‘a‘ |
+---------+------+---------------------------------------+

查询字符串‘1a‘,可以返回1:

mysql> select id from t where id=‘1a‘;
+----+
| id |
+----+
|  1 |
+----+

报警信息:

mysql> show warnings;
+---------+------+----------------------------------------+
| Level   | Code | Message                                |
+---------+------+----------------------------------------+
| Warning | 1292 | Truncated incorrect DOUBLE value: ‘1a‘ |
+---------+------+----------------------------------------+

这种情况不经常遇到,解决办法是在程序中进行数据类型的判断,对前端传入的值进行校验

欢迎批评指正

本文出自 “Amnesiasun” 博客,请务必保留此出处http://amnesiasun.blog.51cto.com/10965283/1931639

以上是关于MySQL 整型字段中查询字符串,返回了所有为0的结果的主要内容,如果未能解决你的问题,请参考以下文章

sql 查询时有空值返回0怎么写

如何让php中通过字段和记录查询得到的mysql返回数据保持原有的数据类型

mysql中的几种判断语句

django排序怎么将字符型字段按整型排序

mysql关键字匹配度模糊查询

mysql怎么查询某个字段里的字符串?