多个 WHERE IS NOT NULL 查询 return 空行

Multiple WHERE IS NOT NULL query return empty line

我尝试仅从 table 中选择包含列 name_durchgefuehrtname_abgelehntname_offen 中的值以及 ID 的行。

但是查询给出了所有列,而不仅仅是那些有值的列。

这是我的查询:

SELECT id, name_durchgefuehrt, name_abgelehnt, name_offen 
FROM dashboard 
WHERE 
    name_durchgefuehrt IS NOT NULL  
    AND name_abgelehnt IS NOT NULL  
    AND name_offen IS NOT NULL

结果:


编辑:

是的,我知道这对你们大多数人来说是一个简单的问题,但我对价值的理解是错误的 'Null',我认为我必须这样做。

总之谢谢大家的回答。

NULL 不是 ''(空字符串),它是一种特殊状态,您可以使用 IS NULL.

进行测试

但是 <> '' 将同时排除 NULL''

所以 :

SELECT id,name_durchgefuehrt,name_abgelehnt,name_offen 
FROM dashboard 
WHERE 
    name_durchgefuehrt <> '' 
    AND 
    name_abgelehnt <> '' 
    AND 
    name_offen <> ''

你必须检查你的值是否也不是空字符串,它不是必需的空值

我想指出一个字符串也可以包含 space 看起来是空的。因此,摆脱 spaces 的更通用的方法是:

SELECT id, name_durchgefuehrt, name_abgelehnt, name_offen 
FROM dashboard 
WHERE TRIM(name_durchgefuehrt) <> '' AND
      TRIM(name_abgelehnt) <> '' AND
      TRIM(name_offen) <> '' IS NOT NULL;

因为有隐藏字符,您可能需要使用正则表达式。例如,如果您有一组 space 个字符:

SELECT id, name_durchgefuehrt, name_abgelehnt, name_offen 
FROM dashboard 
WHERE name_durchgefuehrt regexp '[^[:space]]' AND
      name_abgelehnt regexp '[^[:space]]' AND
      name_offen regexp '[^[:space]]';