Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.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 server 为什么我应该使用Len(columnName)而不是columnName='';(sql server 2008)_Sql Server_Tsql_Sql Server 2008 - Fatal编程技术网

Sql server 为什么我应该使用Len(columnName)而不是columnName='';(sql server 2008)

Sql server 为什么我应该使用Len(columnName)而不是columnName='';(sql server 2008),sql-server,tsql,sql-server-2008,Sql Server,Tsql,Sql Server 2008,只是想知道 我的同事对我说,不要使用columnName=''而是使用Len(columnName)==0 这是在我查询某些内容时发生的,我希望表中的所有列的值都为null或空 对空字符串使用len i/o测试有什么好处吗?我什么也看不见 谢谢如果您想要值为空字符串或null的行,您应该这样做 where Col = '' or Col is null 使用len(Col)将不会为您提供null值的行。通常,您不希望在函数调用中包装列,因为这是不可组织的,意味着不能同时使用索引和列统计信息。可

只是想知道 我的同事对我说,不要使用
columnName=''
而是使用
Len(columnName)==0

这是在我查询某些内容时发生的,我希望表中的所有列的值都为null或空

对空字符串使用len i/o测试有什么好处吗?我什么也看不见


谢谢

如果您想要值为空字符串或null的行,您应该这样做

where Col = '' or Col is null

使用
len(Col)
将不会为您提供
null
值的行。

通常,您不希望在函数调用中包装列,因为这是不可组织的,意味着不能同时使用索引和列统计信息。可能是@Martin Smith的复制品看起来
Len
可能是可销售的,不过。。。如果选择将其实现为这样的优化(在索引中具有相同长度的所有字符串都是连续的),则可以将其转换为(意图等效于)
name>“AAA”和name。我不知道是否应用了这种优化,也不知道索引(如果有的话)对实际性能的影响是什么,只是一种沉思。@pst所有长度相同的字符串在索引中都不是连续的,它们是根据排序规则按字典顺序排列的?@Martin Smith Doh。你完全正确。我不太清楚我当时在想什么…很有趣。我不知道这不会给出一行空值。我刚刚看到这篇文章,想注意,空值不是值。NULL只是缺少或不适用值的标记。但空字符串“”是一个值。这就是区别。因此,当列允许空值时,请确保在TSQL中处理这些值