2011-05-06 65 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 '%' 
相關問題