本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
布林值 (Boolean) 類型
使用 BOOLEAN 資料類型,將 true 和 false 值存放在單位元組資料欄中。下表說明 Boolean 值的三種可能狀態,以及導致狀態的字面值。無論輸入的字串為何,Boolean 資料欄都會分別將「t」和「f」儲存和輸出為 true 與 false。
State | 有效的常值 | 儲存 |
---|---|---|
True | TRUE 't' 'true' 'y' 'yes' '1'
|
1 位元組 |
False | FALSE 'f' 'false' 'n' 'no' '0'
|
1 位元組 |
不明 | NULL
|
1 位元組 |
您可以使用 IS 比較來檢查布林值,但只能做為 WHERE子句中的述詞。您無法將 IS 比較與SELECT清單中的布林值搭配使用。
範例
您可以使用資料BOOLEAN欄,將每位客戶的「作用中/非作用中」狀態存放在CUSTOMER資料表中。
select * from customer; custid | active_flag -------+-------------- 100 | t
在此範例中,下列查詢會從USERS表格中選取喜歡運動但不喜歡戲劇的使用者:
select firstname, lastname, likesports, liketheatre from users where likesports is true and liketheatre is false order by userid limit 10; firstname | lastname | likesports | liketheatre ----------+------------+------------+------------- Alejandro | Rosalez | t | f Akua | Mansa | t | f Arnav | Desai | t | f Carlos | Salazar | t | f Diego | Ramirez | t | f Efua | Owusu | t | f John | Stiles | t | f Jorge | Souza | t | f Kwaku | Mensah | t | f Kwesi | Manu | t | f (10 rows)
下列範例會從資料表中選取使用者,而該USERS資料表不知道他們是否喜歡搖滾音樂。
select firstname, lastname, likerock from users where likerock is unknown order by userid limit 10; firstname | lastname | likerock ----------+----------+---------- Alejandro | Rosalez | Carlos | Salazar | Diego | Ramirez | John | Stiles | Kwaku | Mensah | Martha | Rivera | Mateo | Jackson | Paulo | Santos | Richard | Roe | Saanvi | Sarkar | (10 rows)
下列範例會傳回錯誤,因為它在SELECT清單中使用 IS 比較。
select firstname, lastname, likerock is true as "check" from users order by userid limit 10; [Amazon](500310) Invalid operation: Not implemented
以下範例成功,因為它在SELECT清單中使用相等比較 ( = ),而不是 IS 比較。
select firstname, lastname, likerock = true as "check" from users order by userid limit 10; firstname | lastname | check ----------+-----------+------ Alejandro | Rosalez | Carlos | Salazar | Diego | Ramirez | true John | Stiles | Kwaku | Mensah | true Martha | Rivera | true Mateo | Jackson | Paulo | Santos | false Richard | Roe | Saanvi | Sarkar |