《正则表达式和运算符精品文稿.ppt》由会员分享,可在线阅读,更多相关《正则表达式和运算符精品文稿.ppt(21页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、正正则表达式和运算符表达式和运算符第1页,本讲稿共21页使用正则表达式查询使用正则表达式查询正则表达式是用某种模式去匹配一类字符串的一个方式。正则表达式是用某种模式去匹配一类字符串的一个方式。例如,使用正则表达式可以查询出包含例如,使用正则表达式可以查询出包含A、B、C其中任一字其中任一字母的字符串。正则表达式的查询能力比通配字符的查询能力母的字符串。正则表达式的查询能力比通配字符的查询能力更强大,而且更加的灵活。正则表达式可以应用于非常复杂更强大,而且更加的灵活。正则表达式可以应用于非常复杂查询。本节将详细讲解如何使用正则表达式来查询。查询。本节将详细讲解如何使用正则表达式来查询。MySQL
2、中,使用中,使用REGEXP关键字来匹配查询正则表达关键字来匹配查询正则表达式。其基本形式如下:式。其基本形式如下:属性名属性名 REGEXP 匹配方式匹配方式第2页,本讲稿共21页1 1 查询以特定字符或字符串开头的记录查询以特定字符或字符串开头的记录使用字符使用字符“”可以匹配以特定字符或字符串开可以匹配以特定字符或字符串开头的记录。头的记录。下面从下面从student表表name字段中查询以字母字段中查询以字母“L”开头的记录。开头的记录。SQL代码如下:代码如下:SELECT *FROM student WHERE name REGEXP L;第3页,本讲稿共21页2 2 查询以特定字
3、符或字符串结尾的记录查询以特定字符或字符串结尾的记录使用字符使用字符“$”可以匹配以特定字符或字符串结尾可以匹配以特定字符或字符串结尾的记录。的记录。下面从下面从student表表name字段中查询以字母字段中查询以字母“c”结结尾的记录。尾的记录。SQL代码如下:代码如下:SELECT *FROM student WHERE name REGEXP c$;第4页,本讲稿共21页3 3 用符号用符号“.”“.”来替代字符串中的任意一个来替代字符串中的任意一个字符字符用正则表达式来查询时,可以用用正则表达式来查询时,可以用“.”来替代字符来替代字符串中的任意一个字符。串中的任意一个字符。下面从下
4、面从student表表name字段中查询以字母字段中查询以字母“L”开头,以字母开头,以字母“y”结尾,中间有两个任意字符的记结尾,中间有两个任意字符的记录。录。SQL代码如下:代码如下:SELECT *FROM student WHERE name REGEXP L.y$;第5页,本讲稿共21页4 4 匹配指定字符中的任意一个匹配指定字符中的任意一个使用方括号(使用方括号()可以将需要查询字符组成一个)可以将需要查询字符组成一个字符集。只要记录中包含方括号中的任意字符,该记录字符集。只要记录中包含方括号中的任意字符,该记录将会被查询出来。将会被查询出来。例如,通过例如,通过“abc”可以查询
5、包含可以查询包含a、b、c这三这三个字母中任何一个的记录。个字母中任何一个的记录。下面从下面从student表表name字段中查询包含字段中查询包含c,e,o3个字个字母中任意一个的记录。母中任意一个的记录。SELECT *FROM student WHERE name REGEXP ceo;第6页,本讲稿共21页5 5 匹配指定字符以外的字符匹配指定字符以外的字符使用使用“字符集合字符集合”可以匹配指定字符以外的字可以匹配指定字符以外的字符。符。下面从下面从student表表name字段中查询包含字段中查询包含a到到w字母字母和数字以外的字符的记录。和数字以外的字符的记录。SQL代码如下代码
6、如下SELECT *FROM student WHERE name REGEXP a-w0-9;Sno name2 Lucy4 Lily第7页,本讲稿共21页6 6 匹配指定字符串匹配指定字符串正则表达式可以匹配字符串。当表中的记录包正则表达式可以匹配字符串。当表中的记录包含这个字符串时,就可以将该记录查询出来。如果含这个字符串时,就可以将该记录查询出来。如果指定多个字符串时,需要用符号指定多个字符串时,需要用符号“|”隔开。只要匹配隔开。只要匹配这些字符串中的任意一个即可。这些字符串中的任意一个即可。SELECT *FROM student WHERE name REGEXP ic;SELE
7、CT *FROM student WHERE name REGEXP|ic|uc|aa;第8页,本讲稿共21页7 7 使用使用“*”“*”和和“+”“+”来匹配多个字符来匹配多个字符正则表达式中,正则表达式中,“*”和和“+”都可以匹配多个该都可以匹配多个该符号之前的字符。但是,符号之前的字符。但是,“+”至少表示一个字符,而至少表示一个字符,而“*”可以表示零个字符可以表示零个字符.从从STUDENT表中表中NAME字段中查询字母字段中查询字母c之前之前出现出现a的记录的记录SELECT *FROM student WHERE name REGEXP a*c;Sno name2Aric 3E
8、ric4Jack5lucy第9页,本讲稿共21页8 8 使用使用MM或者或者M,NM,N来指定字符串连续出现的次数来指定字符串连续出现的次数正则表达式中,正则表达式中,“字符串字符串M”表示字符串连续出现表示字符串连续出现M次;次;“字符串字符串M,N”表示字符串联连续出现至少表示字符串联连续出现至少M次,最多次,最多N次。例如,次。例如,“ab2”表示字符串表示字符串“ab”连续出现两次。连续出现两次。“ab2,4”表示字符串表示字符串“ab”连续出现至少两次,最多四次连续出现至少两次,最多四次。从从STUDENT表中表中NAME字段中查询出现过字段中查询出现过a3次记录次记录SELECT
9、*FROM student WHERE name REGEXP a3;Sno name8aaa9Dadaaa10aaabd第10页,本讲稿共21页运算符简介运算符简介当数据库中的表定义好了以后,表中的数据代表的意义当数据库中的表定义好了以后,表中的数据代表的意义就已经定下来了。通过使用运算符进行运算,可以得到包含就已经定下来了。通过使用运算符进行运算,可以得到包含另一层意义的数据。例如,学生表中存在一个另一层意义的数据。例如,学生表中存在一个birth字段,这字段,这个字段是表示学生的出生年份。如果,用户现在希望查找这个字段是表示学生的出生年份。如果,用户现在希望查找这个学生的年龄。而学生表中
10、只有出生年份,没有字段表示年个学生的年龄。而学生表中只有出生年份,没有字段表示年龄。这就需要进行运算,用当前的年份减去学生的出生年份,龄。这就需要进行运算,用当前的年份减去学生的出生年份,这就可以计算出学生的年龄了。这就可以计算出学生的年龄了。从上面可以知道,从上面可以知道,MySQL运算符可以指明对表中数据运算符可以指明对表中数据所进行的运算,以便得到用户希望得到的数据。这样可以使所进行的运算,以便得到用户希望得到的数据。这样可以使MySQL数据库更加灵活。数据库更加灵活。MySQL运算符包括算术运算符、运算符包括算术运算符、比较运算符、逻辑运算符和位运算符这四类。比较运算符、逻辑运算符和位
11、运算符这四类。算术运算符:算术运算符:比较运算符:比较运算符:逻辑运算符:逻辑运算符:位运算符:位运算符:第11页,本讲稿共21页算术运算符算术运算符算术运算符是算术运算符是MySQL中最常用的一类运算符。中最常用的一类运算符。MySQL支持的算术运算符包括加、减、乘、除、求余。支持的算术运算符包括加、减、乘、除、求余。符号表达式的形式作用+x1+x2+xn加法运算-x1-x2-xn减法运算*x1*x2*xn乘法运算/x1/x2除法运算,返回x1除以x2的商DIVx1 DIV x2除法运算,返回商。同“/”%x1%x2求余运算,返回x1除以x2的余数MODMOD(x1,x2)求余运算,返回余数
12、。同“%”第12页,本讲稿共21页比较运算符比较运算符比较运算符是查询数据时最常用的一类运算符。比较运算符是查询数据时最常用的一类运算符。SELECT语句中的条件语语句中的条件语句经常要使用比较运算符。通过这些比较运算符,可以判断表中的哪些记录是符合句经常要使用比较运算符。通过这些比较运算符,可以判断表中的哪些记录是符合条件的。条件的。1运算符运算符“=”2运算符运算符“”和和“!=”3运算符运算符“”(与与=是一样的,用来判断操作数是否相等。区别在于是一样的,用来判断操作数是否相等。区别在于“”可以用来判断可以用来判断NULL)4运算符运算符“”5运算符运算符“=”6运算符运算符“”7运算符
13、运算符“28,17=16,3028,17=16,17=17,1617,7NULL,NULLNULL。(3)判断字符串)判断字符串“mybook”是否为空,是否以字母是否为空,是否以字母m开头,开头,以字母以字母k结尾。结尾。(4)在)在MySQL中执行下列逻辑运算:中执行下列逻辑运算:2&0&NULL,1.5&2,3|NULL,NOT NULL,3 XOR 2,0 XOR NULL。第19页,本讲稿共21页小结小结本章介绍了本章介绍了MySQL中的运算符。中的运算符。MySQL中包括四类运中包括四类运算符,分别是算术运算符、比较运算符、逻辑运算符、位运算符,分别是算术运算符、比较运算符、逻辑运
14、算符、位运算符。前三种运算符在实际操作中使用比较频繁,也是本章算符。前三种运算符在实际操作中使用比较频繁,也是本章中重点讲述的内容。因此,读者需要认真学习这部分的内容。中重点讲述的内容。因此,读者需要认真学习这部分的内容。位运算符是本章的难点。因为,位运算符需要将操作数转换位运算符是本章的难点。因为,位运算符需要将操作数转换为二进制数,然后进行位运算。这要求读者能够掌握二进制为二进制数,然后进行位运算。这要求读者能够掌握二进制运算的相关知识。位运算符在实际操作中使用的频率比较低。运算的相关知识。位运算符在实际操作中使用的频率比较低。第20页,本讲稿共21页本章习题本章习题1在在MySQL中执行如下算术表达式:中执行如下算术表达式:5*2-4,(2+7)/3,9 DIV 2,MOD(9,2)。2在在MySQL中执行下面的比较运算的表达式:中执行下面的比较运算的表达式:40=30,40=30,NULLNULL,77。3在在MySQL中执行下面的逻辑运算的表达式:中执行下面的逻辑运算的表达式:-1&2,-2|NULL,NULL XOR 0,1 XOR 0,!-1。4在在MySQL中执行下列位运算:中执行下列位运算:11&15,11|15,1315,15。第21页,本讲稿共21页