mysql - 为什么 where 子句中的“1A”被标识为列名?
问题描述
为什么这个sql不能执行?
SELECT * FROM TEST_190530 WHERE ID=1A;
我知道 1A 需要用引号引起来,因为它是一个字符串,例如 "WHERE ID='1A';" 但我想知道原因。为什么没有引号的1A被标识为 sql 中的列名?
CREATE TABLE TEST_190530
(ID VARCHAR(50));
INSERT INTO TEST_190530 VALUES('1A');
INSERT INTO TEST_190530 VALUES('1');
INSERT INTO TEST_190530 VALUES('2C');
mysql> SELECT * FROM TEST_190530 WHERE ID=1;
+----+
| ID |
+----+
| 1A |
| 1 |
+----+
2 rows in set
mysql> SHOW WARNINGS;
+---------+------+----------------------------------------+
| Level | Code | Message |
+---------+------+----------------------------------------+
| Warning | 1292 | Truncated incorrect DOUBLE value: '1A' |
| Warning | 1292 | Truncated incorrect DOUBLE value: '2C' |
+---------+------+----------------------------------------+
2 rows in set
mysql> SELECT * FROM TEST_190530 WHERE ID=1A;
1054 - Unknown column '1A' in 'where clause'
mysql> SHOW WARNINGS;
+-------+------+---------------------------------------+
| Level | Code | Message |
+-------+------+---------------------------------------+
| Error | 1054 | Unknown column '1A' in 'where clause' |
+-------+------+---------------------------------------+
1 row in set
解决方案
推荐阅读
- c++ - 主窗口在 Qt 中关闭时崩溃 - ProxyModel 标头返回语句
- java - 如何测试在 Springboot 中使用 Mapstruct 映射器的服务类方法?
- python - ValueError:检查输入时出错:预期dense_18_input的形状为(128,)但得到的数组形状为(1,)
- sql - 集合运算符的 PostgreSQL 实现
- c++ - 在 C++ 中,将函数与 std::optional 一起使用是否有意义
参数,表示可选参数? - react-native - 如何找出 React Navigation TopTabNavigator 中哪个选项卡处于活动状态
- c++ - 在C ++中连接两个字符串中用逗号分隔的唯一值
- python - Python exe 和 cplex .dll
- ios - 如何获取刚刚从 NSManagedObject 创建的值
- google-maps - Flutter 中的 Google Maps 相机位置更新问题