[关闭]
@yanglt7 2018-06-06T06:42:06.000000Z 字数 1676 阅读 956

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

MySQL


NULL值处理

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

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

实例

创建数据表:

  1. mysql> create table runoob_test_tbl
  2. -> (
  3. -> runoob_author varchar(40) not null,
  4. -> runoob_count int
  5. -> );
  6. mysql> insert into runoob_test_tbl (runoob_author,runoob_count)
  7. -> values
  8. -> ('RUNOOB','20'),
  9. -> ('菜鸟教程',null),
  10. -> ('Google',null),
  11. -> ('FK','20');
  12. mysql> select * from runoob_test_tbl;
  13. +---------------+--------------+
  14. | runoob_author | runoob_count |
  15. +---------------+--------------+
  16. | RUNOOB | 20 |
  17. | 菜鸟教程 | NULL |
  18. | Google | NULL |
  19. | FK | 20 |
  20. +---------------+--------------+

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

  1. mysql> select * from runoob_test_tbl where runoob_count = null;
  2. Empty set (0.00 sec)
  3. mysql> select * from runoob_test_tbl where runoob_count != null;
  4. 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 次。

实例

  1. 查找name字段中以'st'为开头的所有数据:
  2. mysql>select name from personal_tbl where name regexp '^st';
  3. 查找name字段中以'ok'为结尾的所有数据:
  4. mysql>select name from personal_tbl where name regexp 'ok$';
  5. 查找name字段中包含'mar'字符串的所有数据:
  6. mysql>select name from personal_tbl where name regexp 'mar';
  7. 查找name字段中以元音字符开头或以'ok'字符串结尾的所有数据:
  8. mysql>select name from personal_tbl where name regexp '^[aeiou]|ok$;
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注