MySQL は SQL SELECT コマンドと WHERE 句を使用してデータ テーブルからデータを読み取りますが、指定されたクエリ条件フィールドが NULL の場合、コマンドが正しく動作しない可能性があります。
この状況に対処するために、MySQL は 3 つの主要な演算子を提供します:
IS NULL: カラムの値が NULL の場合、この演算子は true を返します。
IS NOT NULL: 列の値が NULL でない場合、演算子は true を返します。
NULL の条件付き比較演算は非常に特殊です。 = NULL または != NULL を使用して列内の NULL 値を検索することはできません。
MySQL では、NULL 値と他の値 (NULL であっても) の比較は常に false を返します。つまり、NULL = NULL は false を返します。
MySQL は、IS NULL 演算子と IS NOT NULL 演算子を使用して NULL を処理します。
コマンド プロンプトで NULL 値を使用する
次の例では、データベース RUNOOB のテーブル tcount_tbl に runoob_author と runoob_count という 2 つの列が含まれており、runoob_count に NULL 値が設定されていると想定しています。
次の例を試してください:
MariaDB [RUNOOB]> select * from tcount_tbl;
+---------------+------------ - -+
| runoob_count |
+--------------+--------------+
|マラン | NULL |
| ジェン 1 |
+---------------+---- ----------+
6 行 (0.00 秒) )
次の例では、= 演算子と != 演算子が機能しないことがわかります:
MariaDB [RUNOOB]> SELECT * FROM tcount_tbl WHERE runoob_count = NULL;Empty set (0.00 sec)
MariaDB [RUNOOB] ]> SELECT * FROM tcount_tbl WHERE runoob_count != NULL;空のセット (0.00 秒)
次の例のように、データ テーブルの runoob_count 列が NULL であるか、IS NULL および IS NOT NULL を使用する必要があるかを確認します。
MariaDB [RUNOOB]> SELECT * FROM tcount_tbl where runoob_count IS NULL;
| runoob_author |
+--------------+----------- --+| mahran NULL |
| セット内の Jen 行 (0.00 秒)
MariaDB [RUNOOB]> FROM tcount_tbl where runoob_count は NULL;
+--------------- +------ -------+
| runoob_author |
+------+---------- ---+
| +
セット内の 4 行 (0.00 秒)
NULL 値を処理するには、PHP スクリプトを使用します
PHP スクリプトでは、if...else ステートメントを使用して、変数が空の場合は、対応する条件文を生成します。
次の例では、PHP は $runoob_count 変数を設定し、この変数を使用してデータ テーブルの runoob_count フィールドと比較します。
$dbhost ='localhost:3036';
$ dbuser ='root ';
$dbpass ='rootpassword';
$conn = mysql_connect($dbhost, $dbuser, $dbpass);
if(! $conn )
{
die('できませんでした接続: '.mysql_error());
}
if( isset($runoob_count ))
{
$sql ='SELECT runoob_author, runoob_count
runoob_count が NULL ではありません';
}
else
{
$sql ='SELECT runoob_author
」 ''''''''''''''''''''''を設定します'''''' '''''''''' before' will be 'before'''' 与えられる before''‐emp‐ before' 彼女自身前 自分自身 彼女自身間 間もなく tcount_tbl になる tcount_tbl tcount_tbl
mysql _select_db('RUNOOB');
$retval = mysql_query( $sql, $ conn );
if(! $retval )
{
die('データを取得できませんでした: '.mysql_error());
}
while($row = mysql_fetch_array($retval, MYSQL_ASSOC))
{
echo "著者:{$row['runoob_author']}
".
"カウント: {$row ['runoob_count']}
".
"--------------------------------
;";
}
echo "データを正常に取得しましたn";
mysql_close( $conn);
?>
実行結果: