平台手机端网站开发,阿里云wordpress邮件,游戏网站模,工业果蔬机械加工网1.基本字符的匹配 SELECT * FROM a1 WHERE name regexp 1000 #匹配名称含有1000的所有行
SELECT * FROM a1 WHERE name regexp .000 #匹配以000结尾的所有行#xff0c;(.正则中表示#xff1a;匹配任意一个字符) 从中可以看到正则表达式能够模拟LIKE使用通配符#xff0c… 1.基本字符的匹配 SELECT * FROM a1 WHERE name regexp 1000 #匹配名称含有1000的所有行
SELECT * FROM a1 WHERE name regexp .000 #匹配以000结尾的所有行(.正则中表示匹配任意一个字符) 从中可以看到正则表达式能够模拟LIKE使用通配符注意在通配符能完成的时候就不用正则因为正则可能慢点当然正则也能简化通配符完成更大的作用。所以要有所取舍。 LIKE与REGEXP的区别 SELECT * FROM a1 WHERE name LIKE aSELECT * FROM a1 WHERE name regexp a 下面两条语句第一条不返回数据第二条返回数据。 原因如下 LIKE匹配整个列值时不会找到它相应的行也不会被返回除非使用通配符 REGEXP匹配时会自动查找并返回结果。 那么REGEXP也能匹配整个列值使用^和$定位符即可 匹配不区分大小写 Mysql正则大小写都会匹配为区分大小写可使用binary关键字如 SELECT * FROM a1 WHERE name LIKE binary %J% #使用LIKE通配符匹配大写J
SELECT * FROM a1 WHERE name regexp binary j #使用正则匹配小写j 2.进行OR匹配 |为正则表达式的OR操作符表示匹配其中之一 SELECT * FROM a1 WHERE name regexp binary a|j|G 3.匹配特定字符 使用[]括起来的字符将会匹配其中任意单个字符。 SELECT * FROM a1 WHERE name regexp [12]st 以上[12]st正则表达式[12]定义一组字符它的意思是匹配1或2因此结果如下 正如所见[]是另一种OR语句[123]st可以是[1|2|3]st的缩写也可以使用后者注意1|2|3 st这样不推荐因为mysql会假定你的意思是匹配1或2或3st除非你把字符|括在一个集合中,如:[1|2|3]st 字符也可以否定加^则意味着除此之外如[^123]st意思是匹配除了1st、2st、3st之外的数据。 4.匹配范围 正则表达式可以使用-匹配一个范围如[0-9]匹配任意数字无论是1还是11还是10111[a-z]匹配任意小写字母。 5.匹配特殊字符 如上./-/[]等是正则表达式的特殊字符如果要匹配含有这些字符的数据就需要使用转义(escaping)\\。如\\.表示查找.。\\也用来引用元字符具有特殊含义的字符如 \\f:表示换页 \\n:表示换行 \\r:表示回车 \\t:表示制表 \\v:表示纵向制表 Notes: 如果匹配反斜杠本身()则需要使用\\\ 为什么Mysql使用两个反斜杠(\)而很多语言使用一个反斜杠转义呢因为mysql自己解释一个正则表达式库解释一个。 6.匹配字符串