Home実験室 − No.0028


        No.0028(SQL)
        TrueとFalse

■環境
  □OS: Windows XP Professional SP3
  □Oracle: Oracle Database 11g R2 (Standard)
  □OSログインユーザ: ORA_DBAグループ
  □Oracleユーザ: dicdic(実験用ユーザー) → 実験環境構築スクリプト

■実験
  0. 実験ユーザー「dicdic」でコネクトする。

SQL> conn dicdic/Oracle11g 接続されました。 SQL>



  1. 【TrueとFalse】「Where句は絞込みの条件だ」みたいな理解をしていると、この結果に困惑する。
     「whereに続く式を評価し、True(真)なら結果を返す」と理解するのがよさそうだ(たぶん)。

SQL> SELECT * FROM TM05_性別 WHERE 1=1; 性別コード 性別 ---------- ---------- 1 女 2 男 SQL>



  2. エラーにならず、「レコードが選択されませんでした。」となる。
     そりゃ「1=0」は算数的にはあっていないけど、SQL文自体はあっているからだ。
     エラーになるのは構文が違っている場合なのであり、「評価される式が
     False(偽)なら結果を返さない」というだけのことなのだ(たぶん)。おもしろいなぁ。。。。

SQL> SELECT * FROM TM05_性別 WHERE 1=0; レコードが選択されませんでした。 SQL>





    【PR】    Oracle実験室監修  『Oracleアーキテクチャ鳥瞰図』 PDF  (Oracleのアーキテクチャを一目で俯瞰できるイラスト)  


Home実験室 − No.0028

© 2011-2011   Amateur Laboratory of ORACLE
inserted by FC2 system