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中处理这些值