返回MySQL中不为null的结果

时间:2013-10-27 23:07:10

标签: mysql sql select

我有一个像这样的MySQL查询:

SELECT `contact_last_name` FROM `customer` WHERE `contact_last_name` IS NOT NULL

基本上我想返回列contact_last_name中输入了一些内容的任何行。如果它有任何区别,则此列是VARCHAR列。

但相反,它返回数据库中的每一行,无论该列是否为空!

我不确定为什么这个查询不起作用?

3 个答案:

答案 0 :(得分:2)

NULL要求该列实际为NULL。不是空字符串。你想检查它是否为空?

SELECT 
    `contact_last_name` 
FROM 
    `customer` 
WHERE 
    `contact_last_name` != ''

你有空白问题吗?

SELECT 
    `contact_last_name` 
FROM 
    `customer` 
WHERE 
    TRIM(`contact_last_name`) != ''

可以NULL和空吗?

SELECT 
    `contact_last_name` 
FROM 
    `customer` 
WHERE 
    `contact_last_name` != '' 
AND 
    `contact_last_name` IS NOT NULL

答案 1 :(得分:0)

varchar是一个空字符串,它显然是NULL。您可以尝试使用where where子句:

LENGTH(contact_last_name) > 0;

答案 2 :(得分:0)

NULL(未知值)与“空白”(已知但零长度字符串)不同,因此您必须检查两者:

SELECT contact_last_name
FROM customer
WHERE contact_last_name IS NOT NULL
AND contact_last_name != ''

使用mysql,可以缩短为:

SELECT contact_last_name
FROM customer
WHERE ifnull(contact_last_name, '') != ''

还要注意从查询中删除不必要的反引号 - 您拥有的列/表名都不是保留字。