首页 > 解决方案 > 尝试在 SQL 中将空白值转换为 null

问题描述

我正在尝试在进行简单选择时处理空白或 '' 值以更改为 NULL,但它不起作用。

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

还有其他方法吗?

标签: sqlsql-servertsql

解决方案


老实说,有一百万种方法可以做到这一点,有人确实正确地指出 where 子句中的函数消除了索引的使用。

但是在我的查询中发生的是我正在删除字段周围的任何空格(两个修剪),然后 isnull 说,如果你找到一个空值,那么将它设置为''。我这样做是为了只有一个语句,或者您可以摆脱 isnull 并说“或 [manager] 为空”。选择是说修剪管理器,如果它是空白的(nullif),请将其设置为 null 如果我理解正确,这是预期的结果。

SELECT 
    DISTINCT NULLIF(LTRIM(RTRIM([manager])),'') AS Mgr
FROM
    Table
WHERE
    ISNULL(LTRIM(RTRIM([manager])),'') IN ('Abc','bas','xyz','pqr','')

推荐阅读