2015-11-06 142 views
0

删除空字段我有一个select语句如下:SELECT语句

SELECT 
    firstName, 
    lastName, 
    CASE 
     WHEN primaryEmail <> '[email protected]' THEN primaryEmail 
     WHEN secondaryEmail <> '[email protected]' THEN secondaryEmail 
     ELSE ternaryEmail 
    END AS email 
FROM participant 
WHERE 
    primaryEmail <> '[email protected]' 
    OR secondaryEmail <> '[email protected]' 
    OR ternaryEmail <> '[email protected]' 

的问题是,有一些记录与空字段,无论是名字,姓氏,或所得的电子邮件。我将此添加到WHERE子句中:

firstName IS NOT NULL 
AND lastName IS NOT NULL 
AND primaryEmail <> // The already existing WHERE clause code. 

但这些字段仍显示出来。我还没有试图摆脱电子邮件部分,所以没有代码让我在那里展示。

回答

1
SELECT 
     firstName, 
     lastName, 
     CASE 
      WHEN primaryEmail <> '[email protected]' THEN primaryEmail 
      WHEN secondaryEmail <> '[email protected]' THEN secondaryEmail 
      ELSE ternaryEmail 
     END AS email 
    FROM participant 
    WHERE 
     (primaryEmail <> '[email protected]' AND primaryEmail IS NOT NULL) OR 
     (secondaryEmail <> '[email protected]' AND secondaryEmail IS NOT NULL) OR 
     (ternaryEmail <> '[email protected]' AND ternaryEmail IS NOT NULL) 
+0

如果我想指定一个名字,为什么不返回结果? –

+0

对不起,我不确定我是否理解你的问题 – carlosb

+0

如果我添加诸如lastName ='Smith'之类的东西,我没有得到任何不同的结果。 –

0

你需要or逻辑,不and

where 
(firstName is not null or lastName is not null) 
and other conditions 
+0

还是不给我结果。该属性的值可能实际上是'',但是当我添加或firstName <>''时没有任何更改。 –