今回は、Silverの「S3 開発/SQL - S3.1 SQL コマンド(データ型)」からの出題です。
FALSEとNULLは同等である。
SELECT文で値を表示すると、INSERTやUPDATEでの設定で使った値に関わらず、tあるいはfと表示される。
実体は整数型の列で代用されているので、0以外の値は何を設定しても真であるとみなされる。
bo が論理値型の列だとして、それが真である行を検索する場合、
SELECT * FROM table_name WHERE bo;
と書けば良い。
※この例題は実際のOSS-DB技術者認定試験とは異なります。
例題公開日:2014年8月12日
PostgreSQLはネイティブで論理値型をサポートしています。
論理値型の列が取りうる値は、真を意味するTRUE、偽を意味するFALSEの他にNULLがあります。整数型でNULLと0が異なるのと同じように、論理値型のNULLとFALSEは別のものです。
NULL以外の値はTRUEとFALSEの2つだけですが、INSERT文やUPDATE文で値を設定するときには、TRUE/FALSEのキーワードの他に、文字列の’true’,
‘t’, ‘yes’, ‘y’, ‘on’, ‘1’をTRUEの代わりに、’false’, ‘f’, ‘no’, ‘n’, ‘off’,
‘0’をFALSEの代わりに使うことができます。これらのキーワードおよび文字列は、大文字、小文字のいずれで書いても構いません。なお、上記のうち’1’と’0’も文字列であって、整数の1と0は使えないことに注意してください。
SELECT文で値を表示する場合、TRUEならばt、FALSEならばfの1文字だけが表示されます。
WHERE句に記述するとき、”where bo = true”のように書いても動作しますが、列名だけで論理式になるので、単純に”where bo”とだけ書くことができます。
従って、正解はCとEです。
今回の解説について、理解できないポイントがあればどんどん質問をお寄せ下さい。
採用になった方にはLPI-Japanオリジナルの記念品を贈呈します。
※試験問題に関わるお問い合わせにつきましては、LPI-Japan事務局ではお応えできませんのでご了解ください。
© EDUCO All Rights Reserved.