常见的SQL错误有以下几种:
- 表名错误:如果数据库中没有该表,或代码中将表名写错,都会导致程序找不到该表。
- 列名错误:如果某张表中不存在该字段,或代码中将字段名写错,都会导致程序找不到该字段。
- group by错误:可能是select语句中的字段没有在group by子句中出现。
- 权限错误:在公司里面我们要对数据查询时,首先需要申请权限。
- 逗号错误:select后面的多个字段之间要用逗号分隔开来,且只能有一个。最后一个字段与from之间不可以有逗号。
- 括号错误:代码中的括号都是成对出现的,没有成对出现的括号都会报错。
下面列举几个在MariaDB中的错误。
本文使用的是 MariaDB 10.11.3 版本。
- 除以整数得整数
MariaDB [test]> select 1/3 value from dual;
+--------+
| value |
+--------+
| 0.3333 |
+--------+
1 row in set (0.000 sec)
- 除数为0
MariaDB [test]> select 2/0 as value;
+-------+
| value |
+-------+
| NULL |
+-------+
1 row in set, 1 warning (0.000 sec)
MariaDB [test]> show warnings;
+---------+------+---------------+
| Level | Code | Message |
+---------+------+---------------+
| Warning | 1365 | Division by 0 |
+---------+------+---------------+
1 row in set (0.000 sec)
- count可为null列
使用 count 时,需要确认列中是否存在 null, 否则结果会出现不一致的情况。
MariaDB [test]> insert t1 select 3,null;
Query OK, 1 row affected (0.004 sec)
Records: 1 Duplicates: 0 Warnings: 0
MariaDB [test]> select count(b), count(*) from t1;
+----------+----------+
| count(b) | count(*) |
+----------+----------+
| 5 | 6 |
+----------+----------+
1 row in set (0.001 sec)
- 字符串拼接
在 MariaDB 中为 null。
MariaDB [test]> select 'char'||null newv from dual;
+------+
| newv |
+------+
| NULL |
+------+
1 row in set, 2 warnings (0.000 sec)
MariaDB [test]> show warnings;
+---------+------+------------------------------------------+
| Level | Code | Message |
+---------+------+------------------------------------------+
| Warning | 1292 | Truncated incorrect DOUBLE value: 'char' |
| Warning | 1292 | Truncated incorrect DOUBLE value: 'char' |
+---------+------+------------------------------------------+
2 rows in set (0.000 sec)
标签:count,错误,sec,SQL,test,MariaDB,select,row
From: https://blog.51cto.com/u_15081581/6532352