我剛剛發現you can write像MySQL的 「未知」
SELECT NULL IS UNKNOWN
它返回1
。
有沒有其他地方可以使用UNKNOWN
?它似乎不是關鍵字(不能做SELECT UNKNOWN
)。 NULL IS NULL
也是如此,那麼UNKNOWN
有什麼用途?
我剛剛發現you can write像MySQL的 「未知」
SELECT NULL IS UNKNOWN
它返回1
。
有沒有其他地方可以使用UNKNOWN
?它似乎不是關鍵字(不能做SELECT UNKNOWN
)。 NULL IS NULL
也是如此,那麼UNKNOWN
有什麼用途?
UNKNOWN
僅僅是BOOLEAN
NULL
別名...同樣的方式,TRUE
只是爲1
和FALSE
的別名只是0
一個別名,因爲in MySql BOOLEAN
itself is just an alias for TINYINT(1)
爲什麼它甚至在那裏?因爲它是SQL-92標準的一部分:
<truth value> ::=
TRUE
| FALSE
| UNKNOWN
爲什麼你可以SELECT NULL
,SELECT TRUE
,SELECT FALSE
,但不SELECT UNKNOWN
?可能只是一個bug,since UNKNOWN
itself wasn't supported until newer versions of MySql。
它只是用來描述一個沒有已知值的布爾值。就像第一個例子所說的那樣,它的布爾值等於NULL
。
爲什麼只是布爾值? 'SELECT'asdf'IS UNKNOWN'起作用。 – 2013-02-27 23:27:36
因爲在MySQL中'NULL IS UNKNOWN',當然你可以'SELECT'asdf'IS NULL'。 – Mchl 2013-02-27 23:30:42
在我看來,在MySQL中,UNKNOWN
是NULL
的別名,用於布爾意義上。
我能找到這個參考:
在SQL中,所有邏輯運算符評估爲TRUE,FALSE或NULL(未知)。
MySQL docs - 12.3.3. Logical Operators
上一般SQL NULL和未知的一些詳細信息:
當一個NOT NULL約束限制,在SQL BOOLEAN就像 布爾類型從其他語言。然而,不受限制,儘管BOOLEAN數據類型的名稱是 ,但它們可以保留真值TRUE, FALSE和UNKNOWN,根據標準,所有這些都被定義爲布爾文字 。該標準還斷言NULL和「未知」可以互換使用,表示完全相同的事物。
+1有一個小的通知:考慮到'TRUE'作爲'1'的別名有點誤導,因爲'2 IS TRUE'(和其他任何非零整數),但你實際上不能做'SELECT 2 IS 1' – Mchl 2013-02-28 09:11:04