数据库笔记-SQL过滤(LIKE&正则表达式)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据库笔记-SQL过滤(LIKE&正则表达式)相关的知识,希望对你有一定的参考价值。
参考技术A查询语句:
结果:
查询语句:
结果:
查询语句:
结果:
查询语句:
正则表达式 [32]1,[32]定义一组字符,它的意思是匹配 3 或匹配 2,也就是「31」或者 「21」都算是匹配的。
结果:
查询语句:
结果:
如果要匹配特殊字符的,需要加上前导「\\」,「\\-」表示查找「-」,「\\.」表示查找「.」
这种就是 「转义(escaping)」 ,在正则表达式里,本身有意义的字符,比如「.」是匹配任意字符的意思。那如果要匹配它,需要转义。
注意:在 mysql 里,是比其他的正则表达式多一个「\\」的,就是「\\」。
趣味提问:
如何匹配「\\」?
答案:「\\\\」
\\\\([0-9] sticks?\\\\) 匹配的是(NUM stick)或者(NUM sticks)。s后的 ? 使得s可选。
重复元字符
* 是 0 个或多个匹配
? 是 1 个或多个匹配
n 是指定n个匹配
n, 是 不少于 n 个匹配
n,m 是 指定匹配的范围,m不超过 255
查询语句:
^值的是字符串的开始,$是字符串的结尾。
这就是 REGEXP 与 LIKE 类似,但是它独特的好处:可以通过「定位符」只匹配「子字符串」。
结果:
oracle 正则表达式如何提取AABAAB类型的数据?
oracle 正则表达式如何表达AABAAB型,另外regexp_like(servnumber,'((\d)\11(\d))1$'),没有结果显示。
用 regexp_like这个函数来解决,正则表达式为:[[:punct:]]+这个正则可以找出任何标点符号。查询value中包含任何标点符号的记录如下:
select * from xxx where regexp_like(value,'[[:punct:]]+');
POSIX 正则表达式由标准的元字符(metacharacters)所构成: '$' 匹配输入字符串的结尾位置。如果设置了 RegExp 对象的 Multiline 属性,则 $ 也匹配 '\n' 或 '\r'。 '?' 匹配前面的子表达式零次或一次。 '*' 匹配前面的子表达式零次或多次。
'|' 指明两项之间的一个选择。例子'^([a-z]+|[0-9]+)$'表示所有小写字母或数字组合成的 '( )' 标记一个子表达式的开始和结束位置。 'm,n' 一个精确地出现次数范围,m=<出现次数<=n,'m'表示出现m次,'m,'表示至少出现m次。
\num 匹配 num,其中 num 是一个正整数。对所获取的匹配的引用。 [[:alpha:]] 任何字母。
[[:digit:]] 任何数字。
[[:alnum:]] 任何字母和数字。
[[:space:]] 任何白字符。
[[:upper:]] 任何大写字母。
[[:lower:]] 任何小写字母。
[[:punct:]] 任何标点符号。
[[:xdigit:]] 任何16进制的数字,相当于[0-9a-fA-F]。 \转义符 *, +, ?, n, n,, n,m 限定符^, $, anymetacharacter 位置和顺序。 参考技术A (((\w)\3)\w)\1追问
你这个三个连续数据是递增或者递减的。运行结果如下:
553012
553765
565567
666678
553345
553321
676678
010012
553123
11121123
522567
如果都是数字就可以换成\\d,上面的多用了一个括号可以省略一个:
((\\d)\\2\\d)\\1
如果要求整个数据符合要求那么开头结尾加上\\b
\\b((\\d)\\2\\d)\\1\\b
以上是关于数据库笔记-SQL过滤(LIKE&正则表达式)的主要内容,如果未能解决你的问题,请参考以下文章