|
一个很直白的概念: 取值时,如果提供的查询条件字段为NULL 时,该命令 可能无法工作,所以要处理 NULL 值;
处理NULL的三大运算符:
IS NULL : 当列的值是NULL , 此运算符返回TRUE .
IS NOT NULL :当列的值不为NULL , 运算符返回TRUE.
<=> :比较操作符 (不同于 = 运算符) , 当比较的两个值为NULL 在列中查找NULL 值。
关于NULL 的条件比较运算符是比较特殊的,不能使用 =NULL 或 !=NULL 在列中查找NULL 值。
在MYSQL 中,NULL 值与任何其他值的比较(即使是NULL ) 永远返回FALSE , 就是 NULL = NULL 返回 false .
来来来 贴段代码- mysql> SELECT * FROM runoob_test_tbl WHERE runoob_count IS NULL;
- +---------------+--------------+
- | runoob_author | runoob_count |
- +---------------+--------------+
- | 菜鸟教程 | NULL |
- | Google | NULL |
- +---------------+--------------+
- 2 rows in set (0.01 sec)
-
- mysql> SELECT * from runoob_test_tbl WHERE runoob_count IS NOT NULL;
- +---------------+--------------+
- | runoob_author | runoob_count |
- +---------------+--------------+
- | RUNOOB | 20 |
- | FK | 20 |
- +---------------+--------------+
- 2 rows in set (0.01 sec)
复制代码
PHP中 NULL 的处理:
在PHP脚本中, 可以用if_else 语句来处理变量是否为空,从而生成相应的条件语句。- <?php
- $dbhost = 'localhost:3306'; // mysql服务器主机地址
- $dbuser = 'root'; // mysql用户名
- $dbpass = '123456'; // mysql用户名密码
- $conn = mysqli_connect($dbhost, $dbuser, $dbpass);
- if(! $conn )
- {
- die('连接失败: ' . mysqli_error($conn));
- }
- // 设置编码,防止中文乱码
- mysqli_query($conn , "set names utf8");
-
- if( isset($runoob_count ))
- {
- $sql = "SELECT runoob_author, runoob_count
- FROM runoob_test_tbl
- WHERE runoob_count = $runoob_count";
- }
- else
- {
- $sql = "SELECT runoob_author, runoob_count
- FROM runoob_test_tbl
- WHERE runoob_count IS NULL";
- }
- mysqli_select_db( $conn, 'RUNOOB' );
- $retval = mysqli_query( $conn, $sql );
- if(! $retval )
- {
- die('无法读取数据: ' . mysqli_error($conn));
- }
- echo '<h2>菜鸟教程 IS NULL 测试<h2>echo '<table border="1"><tr><td>作者</td><td>登陆次数</td></tr>while($row = mysqli_fetch_array($retval, MYSQL_ASSOC))
- {
- echo "<tr>".
- "<td>{$row['runoob_author']} </td> ".
- "<td>{$row['runoob_count']} </td> ".
- "</tr>";
- }
- echo '</table>mysqli_close($conn);
- ?>
复制代码
|
|