扫码一下
查看教程更方便
我们已经知道 mysql 使用 sql select 命令及 where 子句来读取数据表中的数据,但是当提供的查询条件字段为 null 时,该命令可能就无法正常工作。
为了处理这种情况,mysql提供了三大运算符:
关于 null 的条件比较运算是比较特殊的。你不能使用 = null 或 != null 在列中查找 null 值 。
在 mysql 中,null 值与任何其它值的比较(即使是 null)永远返回 null,即 null = null 返回 null 。
mysql 中处理 null 使用 is null 和 is not null 运算符。
以下示例中使用在前面章节中在数据库 jiyik 中的表 tcount_tbl ,该表含有两列 jiyik_author 和 jiyik_count, jiyik_count 中设置插入null值。
mysql> insert into tcount_tbl (jiyik_author, jiyik_count) values ('onmpw', null);
query ok, 1 row affected (0.00 sec)
mysql> insert into tcount_tbl (jiyik_author, jiyik_count) values ('jiyik', null);
query ok, 1 row affected (0.00 sec)
mysql> select * from tcount_tbl;
-------------- -------------
| jiyik_author | jiyik_count |
-------------- -------------
| 迹忆客 | 10 |
| jiyik.com | 20 |
| google | 22 |
| onmpw | null |
| jiyik | null |
-------------- -------------
5 rows in set (0.00 sec)
以下示例中你可以看到 = 和 != 运算符是不起作用的:
mysql> select * from tcount_tbl where jiyik_count = null;
empty set (0.00 sec)
mysql> select * from tcount_tbl where jiyik_count != null;
empty set (0.01 sec)
查找数据表中 tcount_tbl 列是否为 null,必须使用 is null 和 is not null,如下所示:
mysql> select * from tcount_tbl where jiyik_count is null;
-------------- -------------
| jiyik_author | jiyik_count |
-------------- -------------
| onmpw | null |
| jiyik | null |
-------------- -------------
2 rows in set (0.01 sec)
mysql> select * from tcount_tbl where jiyik_count is not null;
-------------- -------------
| jiyik_author | jiyik_count |
-------------- -------------
| 迹忆客 | 10 |
| jiyik.com | 20 |
| google | 22 |
-------------- -------------
3 rows in set (0.00 sec)
php 脚本中你可以在 if...else 语句来处理变量是否为空,并生成相应的条件语句。
以下实例中 php 设置了 $jiyik_count 变量,然后使用该变量与数据表中的 jiyik_count 字段进行比较:
connect_errno ) {
printf("connect failed: %s\n", $mysqli->connect_error);
exit();
}
printf("connected successfully.\n");
if(isset($jiyik_count )) {
$sql = "select jiyik_author, jiyik_count from tcount_tbl where jiyik_count = {$jiyik_count}";
} else {
$sql = 'select jiyik_author, jiyik_count from tcount_tbl where jiyik_count is null';
}
$result = $mysqli->query($sql);
if ($result->num_rows > 0) {
while($row = $result->fetch_assoc()) {
printf("author: %s, count: %d \n",
$row["jiyik_author"],
$row["jiyik_count"]);
}
} else {
printf("no record found.\n");
}
$mysqli->close();
?>
结果如下:
connected successfully.
author: onmpw, count: 0
author: jiyik, count: 0