MySQL NULL值处理、正则表达式

6 MySQL NULL值处理、正则表达式

标签(空格分隔): MySQL


NULL值处理

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

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

  • IS NULL: 当列的值是 NULL,此运算符返回 true。
  • IS NOT NULL: 当列的值不为 NULL, 运算符返回 true。
  • <=>: 比较操作符(不同于=运算符),当比较的的两个值为 NULL 时返回 true。

实例

创建数据表:

mysql> create table runoob_test_tbl
    -> (
    -> runoob_author varchar(40) not null,
    -> runoob_count int
    -> );

mysql> insert into runoob_test_tbl (runoob_author,runoob_count)
    -> values
    -> ('RUNOOB','20'),
    -> ('菜鸟教程',null),
    -> ('Google',null),
    -> ('FK','20');

mysql> select * from runoob_test_tbl;
+---------------+--------------+
| runoob_author | runoob_count |
+---------------+--------------+
| RUNOOB        |           20 |
| 菜鸟教程      |         NULL |
| Google        |         NULL |
| FK            |           20 |
+---------------+--------------+

= 和 != 运算符是不起作用的:

mysql> select * from runoob_test_tbl where runoob_count = null;
Empty set (0.00 sec)

mysql> select * from runoob_test_tbl where runoob_count != null;
Empty set (0.00 sec)

正则表达式

下表中的正则模式可应用于 REGEXP 操作符中:

模式 描述
^ 匹配输入字符串的开始位置。如果设置了RegExp对象的Multiline属性,^也匹配’\n’或’\r’之后的位置。
匹配输入字符串的结束位置。如果设置了RegExp对象的Multiline属性,$也匹配’\n’或’\r’之前的位置。
. 匹配除’\n’之外的任何单个字符。要匹配包括’\n’在内的任何字符,请使用象’[.\n]’的模式。
[…] 字符集合。匹配所包含的任意一个字符。例如,’[abc]’可以匹配”plain”中的’a’。
[^…] 负值字符集合。
p1\p2\p3 匹配p1或p2或p3。例如,’z\food’ 能匹配 “z” 或 “food”。’(z\f)ood’ 则匹配 “zood” 或 “food”。
* 匹配前面的子表达式零次或多次。例如,zo* 能匹配 “z” 以及 “zoo”。* 等价于{0,}。
+ 匹配前面的子表达式一次或多次。例如,’zo+’ 能匹配 “zo” 以及 “zoo”,但不能匹配 “z”。+ 等价于 {1,}。
{n} n 是一个非负整数。匹配确定的 n 次。例如,’o{2}’ 不能匹配 “Bob” 中的 ‘o’,但是能匹配 “food” 中的两个 o。
{n,m} m 和 n 均为非负整数,其中n <= m。最少匹配 n 次且最多匹配 m 次。

实例

查找name字段中以'st'为开头的所有数据:
mysql>select name from personal_tbl where name regexp '^st';
查找name字段中以'ok'为结尾的所有数据:
mysql>select name from personal_tbl where name regexp 'ok$';
查找name字段中包含'mar'字符串的所有数据:
mysql>select name from personal_tbl where name regexp 'mar';
查找name字段中以元音字符开头或以'ok'字符串结尾的所有数据:
mysql>select name from personal_tbl where name regexp '^[aeiou]|ok$;

猜你喜欢

转载自blog.csdn.net/weixin_42061048/article/details/80594632