我正在MySQL-workbench中运行一个MySQL查询。该查询被简化为:
SELECT name1, name2, alg1, alg2
FROM table1, table2
WHERE CONCAT('www.',name1) = name2
AND ((alg1 != NULL) AND (alg2 != NULL));
我得到0条结果。尽管我确信有些记录可以满足满足所有条件的条件。
当我删除第二个条件时,我的查询变为:
SELECT name1, name2, alg1, alg2
FROM table1, table2
WHERE CONCAT('www.',name1) = name2;
我得到许多记录,其中有alg1
和alg2
包含字符串而不是NULL
。 alga1
和alg2
是VARCHAR(500)
类型的字段。它们包含可以包含空格的字符串,并且可以不包含任何空格。请注意,我既不会手动输入字符串null
也不会手动输入NULL
。只是一个空字段,据我所知将在值NULL
或NULL
中包含null
。
我该如何规定alg1
和alg2
在该字段中应该有一个值,而不是空字段?
答案 0 :(得分:1)
您无法将值与NULL
进行比较。相反,您应该使用语句IS NOT NULL
:
SELECT name1, name2, alg1, alg2
FROM table1, table2
WHERE CONCAT('www.',name1) = name2
AND ((alg1 IS NOT NULL) AND (alg2 IS NOT NULL));
您可以在MySQL documentation中找到有关此问题的更多详细信息。