教程 > mysql 教程 > 阅读:29

mysql null 值——迹忆客-ag捕鱼王app官网

我们已经知道 mysql 使用 sql select 命令及 where 子句来读取数据表中的数据,但是当提供的查询条件字段为 null 时,该命令可能就无法正常工作。

为了处理这种情况,mysql提供了三大运算符:

  • is null: 当列的值是 null,此运算符返回 true。
  • is not null: 当列的值不为 null, 运算符返回 true。
  • <=>: 比较操作符(不同于 = 运算符),当比较的的两个值相等或者都为 null 时返回 true。

关于 null 的条件比较运算是比较特殊的。你不能使用 = null 或 != null 在列中查找 null 值 。

在 mysql 中,null 值与任何其它值的比较(即使是 null)永远返回 null,即 null = null 返回 null 。

mysql 中处理 null 使用 is null 和 is not null 运算符。


在命令提示符中使用 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 脚本处理 null 值

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

查看笔记

扫码一下
查看教程更方便
网站地图