我可以使WHERE col LIKE'%'也选择NULL值吗?

时间:2011-05-06 11:03:20

标签: mysql select

我正在尝试使用语法WHERE col LIKE '%'从MySQL数据库中进行选择,但我希望使用该查询选择偶数NULL值。是否有一些命令/运算符可以选择任何数据,包括null

5 个答案:

答案 0 :(得分:17)

使用IFNULL运算符

WHERE IFNULL(xxx, '') LIKE '%'

答案 1 :(得分:7)

SELECT * FROM table WHERE (job LIKE '%' OR job IS NULL)

答案 2 :(得分:2)

如果你想要column1 LIKE'%'并希望column1为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(第1,1列)LIKE'%'实际上是NO-OP ......

答案 3 :(得分:1)

此语句返回除column1

中的NULL之外的所有行
SELECT * FROM table WHERE column1 LIKE '%'

要获取包含在column1中为NULL的行的所有行,请使用:

SELECT * FROM table WHERE IFNULL(column1,1) LIKE '%'

来自MySQL文档:

IFNULL(表达式1,表达式2)

如果expr1不为NULL,则IFNULL()返回expr1;否则返回expr2。 IFNULL()返回一个数值或字符串值,具体取决于使用它的上下文。

但有一点需要注意:如果你在column1上有一个索引,它将不会在这个查询中使用,所以在较大的表中可能会变慢......

答案 4 :(得分:1)

如果要将其与java createQuery

一起使用,请使用COALESCE而不是IFNULL
WHERE COALESCE (xxx, '') LIKE '%'