尝试在SQL中将空白值转换为null

时间:2018-11-01 20:00:04

标签: sql sql-server tsql

在尝试简单选择时,我试图处理一个空值或''值以将其更改为NULL,但是它不起作用。

select distinct case when [Manager]='' then null else [Manager] end as Mgr from Table
where [Manager] in ('Abc', 'bas', 'xyz', 'pqr', '')

还有其他方法吗?

2 个答案:

答案 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','')