删除 Select 语句中的空字段
Remove Empty Fields in Select Statement
我有一个select声明如下:
SELECT
firstName,
lastName,
CASE
WHEN primaryEmail <> 'name@example.com' THEN primaryEmail
WHEN secondaryEmail <> 'name@example.com' THEN secondaryEmail
ELSE ternaryEmail
END AS email
FROM participant
WHERE
primaryEmail <> 'name@example.com'
OR secondaryEmail <> 'name@example.com'
OR ternaryEmail <> 'name@example.com'
问题是有些记录的字段为空,firstName、lastName 或生成的电子邮件。我将其添加到 WHERE 子句中:
firstName IS NOT NULL
AND lastName IS NOT NULL
AND primaryEmail <> // The already existing WHERE clause code.
但这些字段仍然显示。我还没有费心尝试摆脱电子邮件部分,所以我没有代码可以在那里显示。
你需要or
逻辑,而不是and
where
(firstName is not null or lastName is not null)
and other conditions
SELECT
firstName,
lastName,
CASE
WHEN primaryEmail <> 'name@example.com' THEN primaryEmail
WHEN secondaryEmail <> 'name@example.com' THEN secondaryEmail
ELSE ternaryEmail
END AS email
FROM participant
WHERE
(primaryEmail <> 'name@example.com' AND primaryEmail IS NOT NULL) OR
(secondaryEmail <> 'name@example.com' AND secondaryEmail IS NOT NULL) OR
(ternaryEmail <> 'name@example.com' AND ternaryEmail IS NOT NULL)
这个问题是T-SQL中的一个棘手问题。我确实找到了这个问题的答案,并且确切地了解了编译器如何查看 Blank space 或 NULL 的每个 "type"。
http://weblogs.sqlteam.com/mladenp/archive/2007/09/06/How_does_SQL_Server_really_store_NULL-s.aspx
我有一个select声明如下:
SELECT
firstName,
lastName,
CASE
WHEN primaryEmail <> 'name@example.com' THEN primaryEmail
WHEN secondaryEmail <> 'name@example.com' THEN secondaryEmail
ELSE ternaryEmail
END AS email
FROM participant
WHERE
primaryEmail <> 'name@example.com'
OR secondaryEmail <> 'name@example.com'
OR ternaryEmail <> 'name@example.com'
问题是有些记录的字段为空,firstName、lastName 或生成的电子邮件。我将其添加到 WHERE 子句中:
firstName IS NOT NULL
AND lastName IS NOT NULL
AND primaryEmail <> // The already existing WHERE clause code.
但这些字段仍然显示。我还没有费心尝试摆脱电子邮件部分,所以我没有代码可以在那里显示。
你需要or
逻辑,而不是and
where
(firstName is not null or lastName is not null)
and other conditions
SELECT
firstName,
lastName,
CASE
WHEN primaryEmail <> 'name@example.com' THEN primaryEmail
WHEN secondaryEmail <> 'name@example.com' THEN secondaryEmail
ELSE ternaryEmail
END AS email
FROM participant
WHERE
(primaryEmail <> 'name@example.com' AND primaryEmail IS NOT NULL) OR
(secondaryEmail <> 'name@example.com' AND secondaryEmail IS NOT NULL) OR
(ternaryEmail <> 'name@example.com' AND ternaryEmail IS NOT NULL)
这个问题是T-SQL中的一个棘手问题。我确实找到了这个问题的答案,并且确切地了解了编译器如何查看 Blank space 或 NULL 的每个 "type"。
http://weblogs.sqlteam.com/mladenp/archive/2007/09/06/How_does_SQL_Server_really_store_NULL-s.aspx