MySQL条件查询

时间:2010-07-29 17:59:18

标签: mysql

我有一种情况,我将文件名存储在表格的两个字段中。这些字段称为file1和file2。

file1始终存在。某些行可能不存在file2。

我想编写一个查询,只能从DB中获取文件的某个扩展名。

为此我正在使用

...WHERE file1 LIKE '%jpg%'

但是在这里我不能使用AND file2 LIKE '%jpg%'因为file2可能是空的,这没关系。

那么我该怎么办才能在字段不为空时才应用LIKE条件?

5 个答案:

答案 0 :(得分:2)

利用括号来澄清。

WHERE file1 LIKE '%jpg%' AND (file2 LIKE '%jpg%' OR file2 is NULL OR file2 = '')

或从file2

中需要的任何其他条件

答案 1 :(得分:2)

试试这个:

AND (file2 LIKE '%jpg%' OR file2 IS NULL (or file2 = '' depending on what your empty value is) )

答案 2 :(得分:2)

尝试AND (file2 is NULL or file2 LIKE %jpg%)

答案 3 :(得分:2)

SELECT  * 
FROM    files 
WHERE   file1 LIKE '%jpg' AND 
        (file2 LIKE '%jpg' OR file2 IS NULL);

测试用例:

CREATE TABLE files (file1 varchar(20), file2 varchar(20));

INSERT INTO files VALUES ('pic1.jpg', NULL);
INSERT INTO files VALUES ('pic2.png', NULL);
INSERT INTO files VALUES ('pic3.jpg', 'otherpic.jpg');
INSERT INTO files VALUES ('pic4.png', 'nopic.jpg');
INSERT INTO files VALUES ('pic5.bmp', 'otherpic.gif');

返回:

+----------+--------------+
| file1    | file2        |
+----------+--------------+
| pic1.jpg | NULL         |
| pic3.jpg | otherpic.jpg |
+----------+--------------+
2 rows in set (0.00 sec)

答案 4 :(得分:0)

可以使用OR file2 LIKE '%jpg%'吗?