初心者にはなかなか理解しづらい「null」。
そもそも「null」とは、
「NULLは特殊な値です.NULLは 「列名 = NULL」 や 「列名 <> NULL」 といった通常の比較演算子を用いた方法では検索することができません. NULLを対象として検索するにはIS NULL演算子,もしくはIS NOT NULL演算子を使用します.」
そして、
NULL値はデータが存在しないことを表す値です。大文字と小文字のどちらも使用できます。
NULLはデータが存在しないということなので、文字列における空文字”や数値における0とは異なります。
プログラムで使う変数は宣言をした時に領域が確保されます。
そのあと、変数が持っているアドレスが0.0.0.0の状態がnullです。
あ。これはちょっと広義的になってしまうので・・・・説明はここまでで・・・・
現在、CakePHPでプログラミングをしているので、
今回は
CakePHPのfind条件に「null」「not null」を使う方法を記述しておきます。
上記で記述したとおり、「NULLを対象として検索するにはIS NULL演算子,もしくはIS NOT NULL演算子」を使用すると書きました。これはそれぞれ書き方が違います。
<IS NULL>の場合
$data = $this->Model->find( 'all', array( 'conditions' => array('Model.id' => NULL), 'fields' => null, 'order' => null, 'recursive' => 1, ) );
SQLでいうところの、IS NULL の方法。
単純に、 conditions に配列で指定するだけです。
これで WHERE Model.id IS NULL というSQLとなります。
<NOT NULL>の場合
NOT NULL の場合は、ちょっとだけひねって、”NOT”の2次元配列で条件を作成。
$data = $this->Model->find( 'all', array( 'conditions' => array( 'NOT' => array( 'Model.id' => NULL) ), 'fields' => null, 'order' => null, 'recursive' => 1, ) );
カラムにNULL値を持つ事が出来ないように設定する方法になり、
これで、WHERE Model.id IS NOT NULL というSQLとなります。
とりあえずここまでにしますのが、
あと基本的に書き方が同じなfind条件での「IN」、「NOT IN」演算子の使い方については次回にしたいと思います。
それでは。。