Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
正在尝试将SQL中的空值转换为null_Sql_Sql Server_Tsql - Fatal编程技术网

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

正在尝试将SQL中的空值转换为null,sql,sql-server,tsql,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', '') 还有其他方法吗?我想,您还需要使用检查空值,或者[Manager]为空 select distinct case when [

我正在尝试处理一个空白或“”值,以便在执行简单选择时将其更改为NULL,但它不起作用

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

还有其他方法吗?

我想,您还需要使用
检查空值,或者[Manager]为空

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

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

但是在我的查询中发生的事情是,我正在删除字段周围的任何空白(两个trims),然后isnull表示,如果找到null值,则将其设置为“”。我这样做是为了只有一条语句,或者您可以去掉isnull并说“或者[manager]为null”。select是trim manager,如果为空(nullif),则将其设置为null,如果我理解正确,这是预期结果

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

请显示您得到的结果不正确。可能缺少TRIM()?您的代码按照您的说明执行。我猜您的实际数据中还有其他一些空白字符。其中一个答案的注释是正确的。我们需要复制此问题的DDL和DML。很明显,这不仅仅是我们得到的一点点,让我们继续吧。您没有查询问题。您有一个数据问题。虽然您在此处使用的
NULLIF
是正确的,但您可以稍微扩展一下您的答案,以解释为什么您的答案是正确的。老实说,有一百万种方法可以做到这一点,而且确实有人正确地指出where子句中的函数消除了索引的使用。但是现在发生的事情是,我正在删除字段周围的任何空白(两个trims),然后isnull表示,如果您找到null值,则将其设置为“”。我这样做是为了只有一条语句,或者您可以去掉isnull并说“或者[manager]为null”。select表示修剪管理器,如果为空(nullif),则将其设置为null,如果我理解正确,这是预期结果。出于性能原因,为什么不在('Abc'、'bas'、'xyz'、'pqr'、'')中使用
,其中ISNULL([manager]),''。如果管理器列上存在任何索引,isnull会使该索引无效。这一点很好。我通过Brent Ozar的博客在dba.stackexchange.com上找到了这个。它有一些关于这个主题的有趣信息: