在FROM / JOIN语句中带有Isqual的IsNull“ isNull(t.fieldname,'N')='Y'”

时间:2018-10-31 12:35:37

标签: sql sql-server tsql

大家好,我是新来的,所以我希望我能做到这一点,如果没有,我对此表示歉意。

无论如何,我试图理解SQL中的isNull运算符。我完全理解isnull检查第一个参数中的字段是否为Null值,然后用第二个值替换该Null的事实。

但是ISNULL运算符之外的等号在这里(= 'Y')是什么意思?

我不知道这个等号将如何应用于我对ISNULL()的了解。顺便说一下,此isNull语句位于FROM语句中,更具体地说是JOIN。任何帮助或见识将不胜感激。 ISNULL()的语法如下。提前致谢!

isNull(t.fieldname,'N') = 'Y'

3 个答案:

答案 0 :(得分:3)

等同于:

(t.fieldname IS NOT NULL AND t.fieldname = 'Y') 

但是,这样做也会简化:

t.fieldname = 'Y'

这将仅过滤具有fieldname ='Y'的记录。假设部分来自WHERE子句,如果不是JOIN子句的ON子句,则可以编写一个简单的case表达式:

ON (CASE WHEN t.FieldName IS NULL THEN 'N' ELSE t.Fieldname END) = 'Y'

答案 1 :(得分:0)

ISNULL是仅将NULL值替换为指定值的函数,否则返回原始值。

在您的情况下,如果isNull(t.fieldname,'N'),则N返回t.fieldname is null

例如,您可以检查以下页面:https://www.w3schools.com/sql/sql_isnull.asp

答案 2 :(得分:0)

这里讨论的情况有点类似。 IsNull with Equal ¿What does this means?

我希望它能为您提供帮助。