NULLIF之间的区别(NULLIF(UPPER(T.Column),''),' NULL')和NULLIF(NULLIF(T.Column,'') ' NULL&#39)?

时间:2014-04-10 13:28:36

标签: sql sql-server sql-server-2012

在我的SQL中,我在lof的地方使用NULLIF(NULLIF(UPPER(T.Column),''),'NULL')。但问题是它正在将T.Column更新为上限。现在我想使用NULLIF(NULLIF(T.Column,''),'NULL')。我的申请正在制作中。不确定运行这会影响我的查询吗?

2 个答案:

答案 0 :(得分:1)

它会影响您的查询......这取决于您放置所有NULLIF语句的位置。您通常会为DB提供更多工作,但如果此列包含在WHERE语句中,则很可能会阻止优化器在列上使用索引。因此,它可能会对业绩产生负面影响。如果它包含在一个选择语句中,那么它的影响仍然是负面但更少。

就个人而言,它看起来有点凌乱。如果您在整个地方使用它,请考虑创建此表的视图。在视图中创建一个具有此逻辑的列。然后,您的代码可以引用该视图,而无需重复上述功能。你的存储过程代码将更加清洁,乱七八糟的东西!

答案 1 :(得分:1)

如果您确定该字段中的所有值都是大写的,则UPPER调用是超级的。

请注意,即使该值包含文字'NULL',该值也必须为大写,例如'Null''null'不会转换为null,除非您在该字段中设置了一个案例介绍归类。