Sql server 两者之间有什么区别!=不是吗?和一般为空
我在理解t-sql如何处理空值方面有点困难 作为一个C#guy,我倾向于Sql server 两者之间有什么区别!=不是吗?和一般为空,sql-server,sql-server-2000,Sql Server,Sql Server 2000,我在理解t-sql如何处理空值方面有点困难 作为一个C#guy,我倾向于 IF(@myVar != null)... 但是,这似乎从未运行过我的代码。我也是 IF(@myVar is not null) 有什么区别 其次,加法的工作方式尚不清楚。假设我有 declare @someCount int, @someFinalResult int --Select that returns null SELECT @someCount = columnName from tableName w
IF(@myVar != null)...
但是,这似乎从未运行过我的代码。我也是
IF(@myVar is not null)
有什么区别
其次,加法的工作方式尚不清楚。假设我有
declare @someCount int, @someFinalResult int
--Select that returns null
SELECT @someCount = columnName from tableName where someColumn = someValue
如果我这样做了
SET @someFinalResult = @someCount + 1--I seem to get NULL if I had null + something
但是,如果我先
declare @someCount int, @someFinalResult int
--FIRST SET DEFAULT TO 0
SET @someCount = 0
--Select that returns null
SELECT @someCount = columnName from tableName where someColumn = someValue
现在,
@someCount
默认为0,即使结果为NULL,它实际上也不会设置为NULL。为什么?通常,它是这样的:NULL
是未知的,所以=NULL也是未知的,因为您不知道它是否相等。你甚至不知道两个未知数是否相等。这或多或少适用于任何未知操作,当您向未知添加某些内容时,结果几乎不为您所知。通常,它是这样的:NULL
是未知的,所以=NULL也是未知的,因为您不知道它是否相等。你甚至不知道两个未知数是否相等。这同样适用于或多或少的任何未知操作,当您向未知添加某些内容时,结果几乎不为您所知。当您处理所有未知操作时,您基本上都在处理这些操作
在你的例子中
IF(@myVar!=null)
vsIF(@myVar不为null)
它基本上归结为一个问题:@myVar=null
与@myVar为null
@myVar=null
将始终计算为null,因为您要求的是:
@myVar中的值是否等于未知值
因为您不知道未知是什么,所以这个问题不能用是或否来回答,因此它的计算结果为未知
e.g.
"is 1 = UNKNOWN" - I do not know
"is 'a' = UNKNOWN" - I do not know
"is UNKNOWN = UNKNOWN" - I do not know
最后一个可能有点棘手,但想象一下,你有两个装有苹果的盒子,你既不知道盒子1和盒子2中有多少苹果,所以问:
is count(box1) = count(box2)
is the same as
is UNKNOWN = UNKNOWN"
所以答案是我不知道
第二个@myVar为null
不同,就像是在询问
is the value in @myVar UNKNOWN
不同之处在于,您特别询问“存储在变量中的值是否未知?”
当你处理这些问题时,你基本上是在处理所有的问题
在你的例子中
IF(@myVar!=null)
vsIF(@myVar不为null)
它基本上归结为一个问题:@myVar=null
与@myVar为null
@myVar=null
将始终计算为null,因为您要求的是:
@myVar中的值是否等于未知值
因为您不知道未知是什么,所以这个问题不能用是或否来回答,因此它的计算结果为未知
e.g.
"is 1 = UNKNOWN" - I do not know
"is 'a' = UNKNOWN" - I do not know
"is UNKNOWN = UNKNOWN" - I do not know
最后一个可能有点棘手,但想象一下,你有两个装有苹果的盒子,你既不知道盒子1和盒子2中有多少苹果,所以问:
is count(box1) = count(box2)
is the same as
is UNKNOWN = UNKNOWN"
所以答案是我不知道
第二个@myVar为null
不同,就像是在询问
is the value in @myVar UNKNOWN
不同之处在于,您特别询问“存储在变量中的值是否未知?”