上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
Oracleでは文字列の比較のときには末尾のスペースは無視される。
Oracle歴17年のうちのごく最初の時期に体験した知識である。
そのくらい古い知識なので、実際に検証して裏づけを取る必要もある。
ソフトウェア開発では、頭の中で、「ここは○○だから○○になるに違いない。」と決め付けるのは禁物で、実際に小さなプログラムを作成して確認しておくほうが確実。
C言語も学びはじめの頃は(だいぶ慣れた頃でも)あいまいな時には必ず小プログラムを書いて確認しながら仕事をすすめていた。
数学の公式を忘れたときも同じだ。
その公式を導き出す方法をしっかり覚えておけば、公式の一部分が2乗だったか3乗だったか、プラスだったかマイナスだったか記憶があやふやなときでも正確に知ることができる。
SQL> select 1 from dual where 'ABCDEFG ' = 'ABCDEFG';

1
----------
1

SQL>


先日も同じくOracleで、NULL値を持つ変数 X に対して X <> 0 (Xは0でない)か?という条件文を実行していた。
頭の中だけで考えるとこの式の評価はTRUEになりそうなのだが、実際はFALSEなのである。
NULL値に対して = や <> という比較はFALSEと評価される。
これはOracleの仕様なので納得がいくとかいかないとか言う分野ではない。
NULL値に対して評価が意味を持つのは IS NULL と IS NOT NULL だけである。

SQL> select * from dual where 0 is not null;

D
-
X

SQL> select * from dual where null <> 0;

レコードが選択されませんでした。

SQL>


DUALはこういうときに役に立つレコードを1件だけ持つダミーテーブルである。
DATE型のデフォルトのフォーマットやTO_CHAR()等の関数の動作を確認するときに使える。
SQL> desc dual
名前 NULL? 型
----------------------------------------- -------- ----------------------------
DUMMY VARCHAR2(1)

SQL> select * from dual;

D
-
X

SQL>
スポンサーサイト
Comment
Trackback













管理者にだけ表示を許可する

Comment form

あにやん

  • Author:あにやん
  • 何でもありのあにやんわーるど。
    でも、写真が中心かな。



      follow me on Twitter


    プロフィール
    ブロとも申請フォーム

    Page Top

    Powered by FC2 Blog |

    FC2Ad

    | Template Design by スタンダード・デザインラボ

    上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。