2012-04-10 55 views
2

在t-sql中,當您將任何數據轉換爲數據類型位時,任何非零值都將轉換爲true。我正在處理列不可空的前提。我會認爲NULL是一個非零值,當然,如果你將值null轉換爲數據類型位,你會期望它爲0(也是假的)。什麼構成tsql中的非零值?

這就是說我不知道​​究竟是什麼構成了一個非零值,因爲基於空值(我認爲它)是一個非零值,它將被轉換爲值1(真)。

所以我的問題真正變成了NULL是一個非零值,或者是NULL值(因爲缺少一個值)實際上是完全分開的,並且不算作非零值或零,並且只計算爲NULL本身 - 而且如果是這種情況,那麼如果插入到不可空列中,它將被轉換爲什麼?

非常感謝,

+0

'NULL'是不確定的。它與'Non-One'一樣是'Non-Zero'。問題的答案是「非零非零?」是「NULL」。而'NULL'不是'真'。只有'TRUE'允許布爾測試成功。 – MatBailie 2012-04-10 10:42:21

+0

順便說一下,這是一個有點假設的問題,因爲我完全知道,將NULL插入到不可爲空的列中將導致插入失敗!我明白了,NULL本身對於非零和非零都是分開的 - 感謝Dems。 – user1323780 2012-04-10 10:42:54

回答

0

在TSQL,NULL被認爲是一種未知的值這就是爲什麼NULL <> 0 = NULL,而不是1轉換爲位時。

+0

我明白,但理論上,如果將NULL插入非空值位列不會導致插入失敗,那麼值實際上會變成什麼? – user1323780 2012-04-10 11:15:26

+0

NULL是未知的,不能成爲其他任何東西。 – 2012-04-10 11:31:06

+0

不知道有人能回答「如果沒有失敗,那麼它會做什麼?」 – AakashM 2012-04-10 12:17:36