发文章
发文工具
撰写
网文摘手
文档
视频
思维导图
随笔
相册
原创同步助手
其他工具
图片转文字
文件清理
AI助手
留言交流
模式匹配
002
MySQL提供标准的SQL模式匹配,以及一种基于象Unix实用程序如vi、grep和sed的扩展正则表达式模式匹配的格式。
003
004
SQL的模式匹配允许你使用“_”匹配任何单个字符,而“%”匹配任意数目字符(包括零个字符)。在 MySQL中,SQL的模式缺省是忽略大小写的。下面显示一些例子。注意在你使用SQL模式时,你不能使用=或!=;而使用LIKE或NOT LIKE比较操作符。
005
006
为了找出以“b”开头的名字:
007
008
mysql> SELECT * FROM pet WHERE name LIKE
"b%"
;
009
+--------+--------+---------+------+------------+------------+
010
| name | owner | species | sex | birth | death |
011
012
| Buffy | Harold | dog | f | 1989-05-13 | NULL |
013
| Bowser | Diane | dog | m | 1989-08-31 | 1995-07-29 |
014
015
016
为了找出以“fy”结尾的名字:
017
018
"%fy"
019
+--------+--------+---------+------+------------+-------+
020
021
022
| Fluffy | Harold | cat | f | 1993-02-04 | NULL |
023
024
025
026
为了找出包含一个“w”的名字:
027
028
"%w%"
029
+----------+-------+---------+------+------------+------------+
030
031
032
| Claws | Gwen | cat | m | 1994-03-17 | NULL |
033
034
| Whistler | Gwen | bird | NULL | 1997-12-09 | NULL |
035
036
037
为了找出包含正好5个字符的名字,使用“_”模式字符:
038
039
"_____"
040
+-------+--------+---------+------+------------+-------+
041
042
043
044
045
046
047
由MySQL提供的模式匹配的其他类型是使用扩展正则表达式。当你对这类模式进行匹配测试时,使用REGEXP和NOT REGEXP操作符(或RLIKE和NOT RLIKE,它们是同义词)。
048
049
扩展正则表达式的一些字符是:
050
051
“.”匹配任何单个的字符。
052
一个字符类“[...]”匹配在方括号内的任何字符。例如,“[abc]”匹配“a”、“b”或“c”。为了命名字符的一个范围,使用一个“-”。“[a-z]”匹配任何小写字母,而“[0-9]”匹配任何数字。
053
“ * ”匹配零个或多个在它前面的东西。例如,“x*”匹配任何数量的“x”字符,“[0-9]*”匹配的任何数量的数字,而“.*”匹配任何数量的任何东西。
054
正则表达式是区分大小写的,但是如果你希望,你能使用一个字符类匹配两种写法。例如,“[aA]”匹配小写或大写的“a”而“[a-zA- Z]”匹配两种写法的任何字母。
055
如果它出现在被测试值的任何地方,模式就匹配(只要他们匹配整个值,SQL模式匹配)。
056
为了定位一个模式以便它必须匹配被测试值的开始或结尾,在模式开始处使用“^”或在模式的结尾用“$”。
057
为了说明扩展正则表达式如何工作,上面所示的 LIKE查询在下面使用REGEXP重写:
058
059
为了找出以“b”开头的名字,使用“^”匹配名字的开始并且“[bB]”匹配小写或大写的“b”:
060
061
mysql> SELECT * FROM pet WHERE name REGEXP
"^[bB]"
062
063
064
065
066
067
068
069
为了找出以“fy”结尾的名字,使用“$”匹配名字的结尾:
070
071
"fy$"
072
073
074
075
076
077
078
079
为了找出包含一个“w”的名字,使用“[wW]”匹配小写或大写的“w”:
080
081
"[wW]"
082
083
084
085
086
087
088
089
090
既然如果一个正规表达式出现在值的任何地方,其模式匹配了,就不必再先前的查询中在模式的两方面放置一个通配符以使得它匹配整个值,就像如果你使用了一个SQL模式那样。
091
092
为了找出包含正好5个字符的名字,使用“^”和“$”匹配名字的开始和结尾,和5个“.”实例在两者之间:
093
094
"^.....$"
095
096
097
098
099
100
101
102
你也可以使用“{n}”“重复n次”操作符重写先前的查询:
103
"^.{5}$"
104
105
106
107
108
109
来自: Suzy周 > 《数据库》
0条评论
发表
请遵守用户 评论公约
CH3.3 数据库创建和使用1
数据库的创建和使用。包括查询,插入,更新,导入数据等
MySQL基本操作
MySQL基本操作MySQL基本操作1. 环境登录。mysql> SELECT * FROM pet;mysql> SELECT name, birth, death, -> (YEAR(death)-YEAR...
MYSQL必知必会
MYSQL必知必会mysql客户端工具:mysql mysql administration mysql query browersdescribe table /show grants(1)检索数据:select A,B from table (distinct A ,limit a,b。table从0行开始,(C...
MySQL学习笔记(5):运算符
MySQL学习笔记(5):运算符。算数运算符。运算符语法说明。除法和取模,若除数为0,则返回NULL。NULL参与的算数运算都返回NULL。比较运算符。NULL <=> NULL返回1,其他值与NULL比较都返回NULL。...
MySql模糊查询like通配符使用详细介绍
MySQL数据库技术(10)
可用圆括号来忽略运算符的优先级并改变表达式的求值顺序,如: 3. 表达式中的NULL 值 请注意,在表达式中使用NULL 值时,其结果有可...
我的MYSQL学习心得(五)
而当一个操作数为NULL时,其返回值为0而不为NULL。逻辑运算符。当任意一个操作数为NULL时,返回值为NULL;对于非NULL的操作数,如果两个...
MySQL(下)忘记密码处理方法、正则表达式、自连接方法及应用场景
mysql> SELECT ''auuuuc'' REGEXP ''au{4}c'';+----------------------------+| ''auuuuc&...
mysql 中 character set 与 collation 的点滴理解
mysql 中 character set 与 collation 的点滴理解。那么 utf8_general_ci, utf8_unicode_ci, utf8_danish_ci 有什么区别? 他们各自存在...
微信扫码,在手机上查看选中内容