我们已经看到SQL SELECT 命令以及 WHERE 子句从MySQLi表中获取数据,但是当我们尝试给出条件时,将字段或列值与 NULL ,它无法正常工作.
为了处理这种情况,MySQLi提供了三个运算符
IS NULL : 如果列值为NULL,则运算符返回true.
IS NOT NULL : 如果列值不为NULL,则运算符返回true.
< => : 运算符比较值,即(对于=运算符),即使对于两个NULL值也是如此.
涉及NULL的条件是特殊的.您不能使用= NULL或!= NULL来查找列中的NULL值.这种比较总是失败,因为无法判断它们是否属实.偶数NULL = NULL失败.
要查找NULL或非NULL的列,请使用IS NULL或IS NOT NULL.
使用NULL值在命令提示符
假设TUTORIALS数据库中有一个表 tutorials_bks ,它包含两列 id 和 name ,其中NULL名称表示该值未知去;
示例
尝试以下示例 :
root@host# mysql -u root -p password;Enter password:*******mysql> use TUTORIALS;Database changedmysql> INSERT INTO tutorials_bks (book) values('');Query OK, 1 row affected (0.08 sec)mysql> INSERT INTO tutorials_bks (book) values('');Query OK, 1 row affected (0.08 sec)mysql> INSERT INTO tutorials_bks (book) values('');Query OK, 1 row affected (0.08 sec)mysql> INSERT INTO tutorials_bks (book) values('NULL');Query OK, 1 row affected (0.08 sec)mysql> INSERT INTO tutorials_bks (book) values('NULL');Query OK, 1 row affected (0.08 sec)mysql> INSERT INTO tutorials_bks (book) values('NULL');Query OK, 1 row affected (0.08 sec)+----+---------+| id | book |+----+---------+| 1 | java || 2 | java || 3 | html || 4 | c++ || 5 | Android || 6 | || 7 | || 8 | || 9 | NULL || 10 | NULL || 11 | NULL |+----+---------+11 rows in set (0.00 sec)mysql>
要查找name列为或不为NULL的记录,查询应该写成这样 :
mysql> SELECT * FROM tutorials_bks WHERE book = "null";+----+------+| id | book |+----+------+| 9 | NULL || 10 | NULL || 11 | NULL |+----+------+3 rows in set (0.00 sec)mysql> SELECT * FROM tutorials_bks WHERE book ! = "null";+----+---------+| id | book |+----+---------+| 1 | java || 2 | java || 3 | html || 4 | c++ || 5 | Android || 6 | || 7 | || 8 | |+----+---------+8 rows in set (0.00 sec)mysql> SELECT * FROM tutorials_bks WHERE book = "";+----+------+| id | book |+----+------+| 6 | || 7 | || 8 | |+----+------+3 rows in set (0.01 sec)
处理NULL值在PHP脚本中
您可以使用 if ... else 条件来准备基于NULL值的查询.
示例
以下示例从外部获取tutorial_count,然后将其与表中可用的值进行比较.
". "Count: {$row['tutorial_count']}
". "--------------------------------
"; } echo "Fetched data successfully\n"; mysql_close($conn);?>