首页 理论教育 MySQL数据库:模式匹配与应用指南

MySQL数据库:模式匹配与应用指南

时间:2023-11-22 理论教育 版权反馈
【摘要】:模式是一种特殊的字符串,特殊之处在于不仅包含普通字符,还包含有通配符。在MySQL中常用的通配符如表5.2所示。图5.5 模糊查询结果2.REGEXP运算符REGEXP运算符用来执行更复杂的字符串比较运算。而REGEXP运算符则有更多的符号有特殊的含义,参见表5.3。

MySQL数据库:模式匹配与应用指南

1.LIKE运算符

使用like进行模糊查询,like运算符用于判断一个字符串是否与给定的模式相匹配。

模式是一种特殊的字符串,特殊之处在于不仅包含普通字符,还包含有通配符。在实际应用中,如果不能对字符串进行精确查询,此时可以使用like运算符与通配符实现模糊查询,like运算符的语法格式如下。

字符串表达式 [not] like 模式

模式是一个字符串,其中包含普通字符和通配符。在MySQL中常用的通配符如表5.2所示。

表5.2 通配符

模糊查询“%”或者“_”字符时,需要将“%”或者“_”字符转义,例如检索学生姓名中所有带“_”的学生信息,可以使用下面的SQL语句,其中new_student表在表记录的更新操作章节中创建。

select * from new_student where student_name like '%\_%';

如果不想使用“\”作为转义字符,可以使用escape关键字自定义一个转义字符,例如下面的SQL语句使用字符“!”作为转义字符。

select * from new_student where student_name like '%!_%' escape '!';

【例5.5】查询PXSCJ数据库XSB表中姓“王”的学生的学号、姓名及性别。

SELECT 学号,姓名,性别

FROM XSB

WHERE 姓名 LIKE '王%';

查询结果如图5.5所示。

图5.5 模糊查询结果

2.REGEXP运算符

REGEXP运算符用来执行更复杂的字符串比较运算。REGEXP是正则表达式(regular expression)的缩写。和LIKE运算符一样,REGEXP运算符有多种功能,但它不是SQL标准的一部分,REGEXP运算符的同义词是RLIKE。语法格式如下:

match_expression [NOT][REGEXP | RLIKE] match_expression

LIKE运算符有两个符号具有特殊的含义:“_”和“%”。而REGEXP运算符则有更多的符号有特殊的含义,参见表5.3。

表5.3 REGEXP运算符的特殊字符

【例5.6】查询姓李的学生的学号、姓名和专业。

SELECT 学号,姓名,专业

FROM XSB

WHERE 姓名 REGEXP '^李';

查询结果如图5.6所示。

图5.6 带REGEXP运算符^的查询

【例5.7】查询学号里包含4、5、6的学生的学号、姓名和专业。(www.xing528.com)

SELECT 学号,姓名,专业

FROM XSB

WHERE 学号 REGEXP '[4,5,6]';

查询结果如图5.7所示。

图5.7 带REGEXP运算符[]的查询

【例5.8】查询学号以08开头、08结尾的学生的学号、姓名和专业。

SELECT 学号,姓名,专业

FROM XSB

WHERE 学号 REGEXP '^08.*08$';

查询结果如图5.8所示。

图5.8 带多个REGEXP运算符的查询

3.范围比较

用于范围比较的关键字有两个:BETWEEN和IN。

当要查询的条件是某个值的范围时,可以使用BETWEEN关键字。BETWEEN关键字指出查询范围,格式为:

expression [NOT] BETWEEN expression1 AND expression2

当不使用NOT时,若表达式expression的值在表达式expression1与expression2之间(包括这两个值),则返回TRUE,否则返回FALSE;使用NOT时,返回值刚好相反。

使用IN关键字可以指定一个值表,值表中列出所有可能的值,当与值表中的任一个匹配时,即返回TRUE,否则返回FALSE。使用IN关键字指定值表的格式为:

4.空值比较

当需要判定一个表达式的值是否为空值时,使用IS NULL关键字,格式为:

expression IS [NOT] NULL

当不使用NOT时,若表达式expression的值为空值,返回TRUE,否则返回FALSE。当使用NOT时,结果刚好相反。

IS NULL用于判断表达式的值是否为空值NULL(is not 恰恰相反)。

说明:不能将“score IS NULL”写成“score = NULL;”,原因是NULL是一个不确定的数,不能使用“=”、“!=”等比较运算符与NULL进行比较。

【例5.11】查询总学分尚不确定的学生情况。

SELECT *

FROM XSB

WHERE 总学分 IS NULL;

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈