在sql语言中一般使用正则表达式过滤数据
01or的关系
a|b 结果=字段1(包含a)+字段2(包含b)
意思是字段中有a或者b都可以
SELECT *
FROM student.re
WHERE restr REGEXP 'a|b'
SELECT *
FROM student.re
WHERE restr REGEXP '[a]'
SELECT *
FROM student.re
WHERE restr REGEXP '[ab]'
【ab】表示【】里面有a或者b=a|b
事实上上面的正则表达式也可以按照下面方式改写
SELECT *
FROM student.re
WHERE restr REGEXP '[a|b]'
SELECT *
FROM student.re
WHERE restr REGEXP '[1-a]'
【m-n】=m|。。。+。。。|n
好吧,我承认这是一种在现实当中没人会去这样用的傻方法
不过,这也只是想帮你发现之间的关系,方便记忆
特殊的
mm?ns
表示选择mn或者mmn可以理解为
mm?ns=mn|mmn
SELECT *
FROM student.re
WHERE restr REGEXP 'aa|b'
【^ABC】
表示除ABC外必须有其他的
SELECT *
FROM student.re
WHERE restr REGEXP '[^abc]'
SELECT *
FROM student.re
WHERE restr REGEXP 'a{2}'
SELECT *
FROM student.re
WHERE restr REGEXP 'a{1,}'
这里其实可以理解为,对a不设置上限
有了不设置上限,有没有不设置下限呢?
SELECT *
FROM student.re
WHERE restr REGEXP 'a{,1}'!
SELECT *
FROM student.re
WHERE restr REGEXP 'a{}'
SELECT *
FROM student.re
WHERE restr REGEXP 'a{0,}'
等同于全选,虽然有结果。但是起不到过滤作用,是个鸡肋,没有卵用。
SELECT *
FROM student.re
WHERE restr REGEXP 'a{1,2}'
SELECT *
FROM student.re
WHERE restr REGEXP '^ab'
SELECT *
FROM student.re
WHERE restr REGEXP 'ab$'
SELECT *
FROM student.re
WHERE restr REGEXP '.ab'
SELECT *
FROM student.re
WHERE restr REGEXP 'ab+'
(。。。)意思是将()内的看成单一元素进行操作
(ab)+
ab,abab,ababab。。。。
SELECT *
FROM student.re
WHERE restr REGEXP '(ab)+'