【发布时间】:2011-08-20 02:34:12
【问题描述】:
我正在尝试使用语法 WHERE col LIKE '%' 从 MySQL 数据库中进行选择,但我想使用该查询甚至选择 NULL 值。是否有一些命令/操作符可以选择任何数据,包括null?
【问题讨论】:
我正在尝试使用语法 WHERE col LIKE '%' 从 MySQL 数据库中进行选择,但我想使用该查询甚至选择 NULL 值。是否有一些命令/操作符可以选择任何数据,包括null?
【问题讨论】:
如果你想在 java createQuery 中使用 COALESCE 而不是 IFNULL
WHERE COALESCE (xxx, '') LIKE '%'
【讨论】:
如果你想要 column1 LIKE '%' 并且想要 column1 IS NULL,为什么不直接删除 WHERE 子句?
试试:
SELECT * FROM TABLE;
这是我尝试过的:
mysql> create table foo (a char(30));
Query OK, 0 rows affected (0.02 sec)
mysql> insert into foo values ( '' );
Query OK, 1 row affected (0.01 sec)
mysql> insert into foo values ( NULL );
Query OK, 1 row affected (0.00 sec)
mysql> select * from foo;
+------+
| a |
+------+
| |
| NULL |
+------+
2 rows in set (0.00 sec)
mysql> select * from foo where a like '%' or a is null;
+------+
| a |
+------+
| |
| NULL |
+------+
2 rows in set (0.00 sec)
mysql> select * from foo where ifnull (a, 1) like '%';
+------+
| a |
+------+
| |
| NULL |
+------+
2 rows in set (0.00 sec)
mysql>
毕竟,IFNULL(column1, 1) LIKE '%' 实际上是一个 NO-OP ...
【讨论】:
WHERE 子句有多个AND 条件,而您仍希望可能缩小为空字段的结果范围,该怎么办?那么你仍然需要WHERE 子句。
此语句返回除 column1 中为 NULL 的行之外的所有行
SELECT * FROM table WHERE column1 LIKE '%'
要获取所有行,包括 column1 中包含 NULL 的行,请使用以下命令:
SELECT * FROM table WHERE IFNULL(column1,1) LIKE '%'
来自 MySQL 文档:
IFNULL(expr1,expr2)
如果 expr1 不为 NULL,IFNULL() 返回 expr1;否则返回 expr2。 IFNULL() 返回一个数字或字符串值,具体取决于使用它的上下文。
但是有一个警告:如果您在 column1 上有一个索引,则不会在此查询中使用它,因此在较大的表中事情可能会变慢...
【讨论】:
SELECT * FROM table WHERE (job LIKE '%' OR job IS NULL)
【讨论】:
使用 IFNULL 运算符
WHERE IFNULL(xxx, '') LIKE '%'
【讨论】: