在gp数据库中使用正则表达式时需要使用关键字“~”,以表示该关键字之前的内容需匹配之后的正则表达式,若匹配规则不需要区分大小写,可以使用组合关键字“~*”;
相反,若gp数据库正则表达式需要查询不匹配这则表达式的记录,只需在该关键字前加否定关键字“!”即可。若正则表达式包含转义字符,则需在表达式前加关键字“E”。
[[:<:]][[:>:]]
分别匹配一个单词开头和结尾的空的字符串,这个单词开头和结尾都不是包含在alnum中
的字符也不能是下划线。(alnum表示英文字母和数字字符)
mysql>select “a word a” REGEXP “[[:<:]]word[[:>:]]”->1(表示匹配)
mysql>select “a xword a” REGEXP “[[:<:]]word[[:>:]]”->0(表示不匹配)
SELECT * FROM Products WHERE account_id REGEXP '[[:<:]]12[[:>:]]'
表示account_id中匹配"111 12 897"这样的account_id
Oracle 正则表达式函数,第一个是输入的字符串
第二个是正则表达式
第三个是标识从第几个字符开始正则表达式匹配。(默认为1)
第四个是标识第几个匹配组。(默认为1)
第五个是是取值范围:
i:大小写不敏感;
c:大小写敏感;
n:点号 . 不匹配换行符号;
m:多行模式;
x:扩展模式,忽略正则表达式中的空白字符。
regexp_substr(t1.GRADE,'[0-9,\.]+',1,1) 就是从t1.GRADE中的第一个字符开始查找第一个匹配正规表达式的值,表达式符合:[0-9,\.]+,即允许是0123456789,.十二个字符中的任意一个或多个组合,且长度必须大于1。
3(54335*453)如何只匹配括号前的数据可以这样:
regexp_substr(t1.GRADE,'[0-9]+',1,1),这个也要看括号前有哪些字段有关,要看具体的情况,我这里认为括号前全是数字。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)