@yanglt7
2018-06-06T06:42:06.000000Z
字数 1676
阅读 956
MySQL
我们已经知道 MySQL 使用 SQL SELECT 命令及 WHERE 子句来读取数据表中的数据,但是当提供的查询条件字段为 NULL 时,该命令可能就无法正常工作。
为了处理这种情况,MySQL提供了三大运算符:
创建数据表:
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$;