在尝试简单选择时,我试图处理一个空值或''值以将其更改为NULL,但是它不起作用。
select distinct case when [Manager]='' then null else [Manager] end as Mgr from Table
where [Manager] in ('Abc', 'bas', 'xyz', 'pqr', '')
还有其他方法吗?
答案 0 :(得分:0)
我想,您还需要使用OR [Manager] IS NULL
select
distinct case when [Manager]='' then null else [Manager] end as Mgr
from Table
where
[Manager] in ('Abc', 'bas', 'xyz', 'pqr', '')
OR [Manager] IS NULL
答案 1 :(得分:0)
老实说,有一百万种方法可以做到这一点,有人确实正确指出了where子句中的函数消除了对索引的使用。
但是查询中发生的事情是我要删除字段周围的所有空格(两个修剪),然后isnull表示,如果找到空值,则将其设置为”。我这样做只有一条语句,或者您可以摆脱isull并说“或[manager]为null”。选择是说修剪管理器,如果它为空白(nullif),则将其设置为null,这是我正确理解后的预期结果。
SELECT
DISTINCT NULLIF(LTRIM(RTRIM([manager])),'') AS Mgr
FROM
Table
WHERE
ISNULL(LTRIM(RTRIM([manager])),'') IN ('Abc','bas','xyz','pqr','')