正则表达式和运算符.ppt

正则表达式查询,使用正则表达式查询,正则表达式是用某种模式去匹配一类字符串的一个方式例如,使用正则表达式可以查询出包含A、B、C其中任一字母的字符串正则表达式的查询能力比通配字符的查询能力更强大,而且更加的灵活正则表达式可以应用于非常复杂查询本节将详细讲解如何使用正则表达式来查询 MySQL中,使用REGEXP关键字来匹配查询正则表达式其基本形式如下: 属性名 REGEXP 匹配方式,1 查询以特定字符或字符串开头的记录,使用字符“”可以匹配以特定字符或字符串开头的记录 下面从student表name字段中查询以字母“L”开头的记录SQL代码如下: SELECT * FROM student WHERE name REGEXP L;,2 查询以特定字符或字符串结尾的记录,使用字符“$”可以匹配以特定字符或字符串结尾的记录 下面从student表name字段中查询以字母“c”结尾的记录SQL代码如下: SELECT * FROM student WHERE name REGEXP c$;,3 用符号“.”来替代字符串中的任意一个字符,用正则表达式来查询时,可以用“.”来替代字符串中的任意一个字符。
下面从student表name字段中查询以字母“L”开头,以字母“y”结尾,中间有两个任意字符的记录SQL代码如下: SELECT * FROM student WHERE name REGEXP L..y$;,4 匹配指定字符中的任意一个,使用方括号()可以将需要查询字符组成一个字符集只要记录中包含方括号中的任意字符,该记录将会被查询出来 例如,通过“abc”可以查询包含a、b、c这三个字母中任何一个的记录 下面从student表name字段中查询包含c,e,o3个字母中任意一个的记录 SELECT * FROM student WHERE name REGEXP ceo;,5 匹配指定字符以外的字符,使用“字符集合”可以匹配指定字符以外的字符 下面从student表name字段中查询包含a到w字母和数字以外的字符的记录SQL代码如下SELECT * FROM student WHERE name REGEXP a-w0-9; Sno name 2 Lucy 4 Lily,6 匹配指定字符串,正则表达式可以匹配字符串当表中的记录包含这个字符串时,就可以将该记录查询出来如果指定多个字符串时,需要用符号“|”隔开。
只要匹配这些字符串中的任意一个即可 SELECT * FROM student WHERE name REGEXP ic; SELECT * FROM student WHERE name REGEXP |ic|uc|aa;,7 使用“*”和“+”来匹配多个字符,正则表达式中,“*”和“+”都可以匹配多个该符号之前的字符但是,“+”至少表示一个字符,而“*”可以表示零个字符. 从STUDENT表中NAME字段中查询字母c之前出现a的记录 SELECT * FROM student WHERE name REGEXP a*c; Sno name Aric Eric Jack lucy,8 使用M或者M,N来指定字符串连续出现的次数,正则表达式中,“字符串M”表示字符串连续出现M次;“字符串M,N”表示字符串联连续出现至少M次,最多N次例如,“ab2”表示字符串“ab”连续出现两次ab2,4”表示字符串“ab”连续出现至少两次,最多四次 从STUDENT表中NAME字段中查询出现过a3次记录 SELECT * FROM student WHERE name REGEXP a3; Sno name aaa Dadaaa aaabd,运算符简介,当数据库中的表定义好了以后,表中的数据代表的意义就已经定下来了。
通过使用运算符进行运算,可以得到包含另一层意义的数据例如,学生表中存在一个birth字段,这个字段是表示学生的出生年份如果,用户现在希望查找这个学生的年龄而学生表中只有出生年份,没有字段表示年龄这就需要进行运算,用当前的年份减去学生的出生年份,这就可以计算出学生的年龄了 从上面可以知道,MySQL运算符可以指明对表中数据所进行的运算,以便得到用户希望得到的数据这样可以使MySQL数据库更加灵活MySQL运算符包括算术运算符、比较运算符、逻辑运算符和位运算符这四类 算术运算符:比较运算符: 逻辑运算符:位运算符:,算术运算符,算术运算符是MySQL中最常用的一类运算符MySQL支持的算术运算符包括加、减、乘、除、求余比较运算符,比较运算符是查询数据时最常用的一类运算符SELECT语句中的条件语句经常要使用比较运算符通过这些比较运算符,可以判断表中的哪些记录是符合条件的 1运算符“=” 2运算符“”和“!=” 3运算符“” (与=是一样的,用来判断操作数是否相等区别在于“” 可以用来判断NULL) 4运算符“” 5运算符“=” 6运算符“<” 7运算符“<=” 8运算符“IS NULL” 9运算符“BETWEEN AND” 10运算符“IN” 11运算符“LIKE” 12运算符“REGEXP”,逻辑运算符,逻辑运算符用来判断表达式的真假。
逻辑运算符的返回结果只有1和0如果表达式是真,结果返回1如果表达式是假,结果返回0逻辑运算符又称为布尔运算符MySQL中支持四种逻辑运算符这四种逻辑运算符分别是与、或、非和异或 1与运算 2或运算 3非运算 4异或运算,1、与运算 操作数只有0时,结果返回0;,3、非运算 !或者NOT表示非运算通过非运算将返回与操作数相反地结果 如果操作数0,返回1; 如果操作数非0,返回0; 如果操作数十NULL,返回NULL; 4、异或运算 XOR表示异或运算; 只要其中任何一个操作数为NULL,结果返回NULL; 如果X1和X2都是非0的数字或者都是0时,结果返回0; 如果X1和X2中一个是非0,另一个是0时,结果返回1;,位运算符,位运算符是在二进制数上进行计算的运算符位运算会先将操作数变成二进制数,然后进行位运算然后再将计算结果从二进制数变回十进制数MySQL中支持六种位运算符这六种位运算符分别是按位与、按位或、按位取反、按位异或、按位左移和按位右移 1按位与 2按位或 3按位取反 4按位异或 5按位左移与按位右移,1、按位与 &表示按位与先将十进制转换为二进制,结果再转为十进制 1&1=1 1&0=0 2、按位或 |表示或。
1|1=1 1|0=1; 3、按位取反 表示按位取反 1=0 0=1,上机实践,题目要求: (1)在MySQL中执行下面的表达式:4+3-1,3*2+7,8/3,9%2 (2)在MySQL中执行下面的表达式:3028,17=16,3017,7NULL,NULLNULL (3)判断字符串“mybook”是否为空,是否以字母m开头,以字母k结尾 (4)在MySQL中执行下列逻辑运算:2&&0&&NULL,1.5&&2,3||NULL,NOT NULL,3 XOR 2,0 XOR NULL小结,本章介绍了MySQL中的运算符MySQL中包括四类运算符,分别是算术运算符、比较运算符、逻辑运算符、位运算符前三种运算符在实际操作中使用比较频繁,也是本章中重点讲述的内容因此,读者需要认真学习这部分的内容位运算符是本章的难点因为,位运算符需要将操作数转换为二进制数,然后进行位运算这要求读者能够掌握二进制运算的相关知识位运算符在实际操作中使用的频率比较低本章习题,1在MySQL中执行如下算术表达式:5*2-4,(2+7)/3,9 DIV 2,MOD(9,2) 2在MySQL中执行下面的比较运算的表达式:40=30,40NULL,77。
3在MySQL中执行下面的逻辑运算的表达式:-1&&2,-2||NULL,NULL XOR 0,1 XOR 0,!-1 4在MySQL中执行下列位运算:11&15,11|15,1315,15。