开发手册 欢迎您!
软件开发者资料库

MySQLi - 处理NULL值

MySQLi处理NULL值 - 从简单和简单的步骤学习MySQLi,从基本到高级概念,包括简介,安装,管理,PHP语法,连接,创建,删除,信息,选择数据库,数据类型,创建,删除,克隆表,插入查询,选择查询,Where子句,更新查询,删除查询,类似子句,排序结果,使用连接,NULL值,Regexps,事务,更改命令,索引,临时,使用序列,处理重复。

我们已经看到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);?>