我有一种情况,我将文件名存储在表格的两个字段中。这些字段称为file1和file2。
file1始终存在。某些行可能不存在file2。
我想编写一个查询,只能从DB中获取文件的某个扩展名。
为此我正在使用
...WHERE file1 LIKE '%jpg%'
但是在这里我不能使用AND file2 LIKE '%jpg%'
因为file2可能是空的,这没关系。
那么我该怎么办才能在字段不为空时才应用LIKE条件?
答案 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%'
吗?