2011-05-06 70 views

回答

14

使用IFNULL操作

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

此语句返回的所有行除非它有NULL在列1

​​

要获得所有的行,包括在列1与空行,使用该行:

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

从MySQL文档:

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

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

有一个警告但是:如果你有一列1指数,它不会在此查询使用,这样的事情能得到较大的表慢...

2

如果你想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(列1,1)LIKE '%' 是一个有效的NO-OP ...

0

如果要与java createQuery一起使用COALESCE而不使用IFNULL

WHERE COALESCE (xxx, '') LIKE '%' 
相关问题