Oracle正则表达式中文书写实战(oracle正则匹配中文)

Oracle 正则表达式实战

正则表达式具有非常强大的搜索功能,可以帮助我们在Oracle数据库中非常轻松地执行搜索和更新操作。 Oracle正则表达式具有非常强大的处理能力,有可能把一部分字段从字符串中提取出来,并通过字符串比较进行更新、替换或者删除。

Oracle支持两种形式的正则表达式,谓词(predicates)和SQL函数REGEXP_SUBSTR、REGEXP_INSTR 、REGEXP_Replace,可以大大提高处理字符串的效率。

首先掌握谓词(predicates)中的相关正则表达式,其使用范围包括简单的比较,以及指定的模式比较,以及用于生成模式比较的Java方法表达式。基本的操作包括查询静态字段,查询某一字段是否以特定的一段字段开头,以特定字段结尾,查询字段包含某个字段,以及查询字段是否为数字。

相比较谓词,SQL函数多样化,有更多用法,其核心函数REGEXP_SUBSTR 能够从字符串中抽取出想要的字段;REGEXP_INSTR用于查找匹配的正则表达式;REGEXP_Replace能够对字符串进行替换;INSTR与REGEXP_INSTR类似都是从字符串中提取出想要的字段,只不过INSTR是查找普通的字段,而REGEXP_INSTR用于查找匹配的正则表达式。

Oracle正则表达式书写实战中,常用的几个正则表达式可以很好地实现复杂或简单的需求:

(1) 匹配startswith

[a-zA-Z_] + :([a-zA-Z0-9_]*)

这个正则表达式用于检验一个字段以特定字符开头的情况,其中的[]中的i标识的是字符类型,表示该字段被限制了英文字母大小写以及” _ “符号;”+”表示”以[a-zA-Z_]开头的字段都被选择;第二个括号里的正则表达式用来确定字段接下来还能够支持何种字符,表示仅支持英文大小写、数字和_字符;同时也能用于查询字段以某种字符及以后即不能再出现该字符的情况。

(2)匹配endswith

[a-zA-Z_] * ([a-zA-Z0-9_] + )

这个正则表达式检查一个字段是否以特定字符结尾的情况,和前一个正则表达式相比,只是把开头格式的”+”符号改为”*”,表示0个或多个。

(3)匹配contains

.+ ([a-zA-Z0-9_] +) .+

这个正则表达式检索字段是否包含特定字符,其中”.”表示任意一个字符,”+”表示至少一个,”()”内的字段指定了字符类型,表示上一个”.”字符只能够出现英文大小写、数字和_字符。

Oracle中的正则表达式对于数据库管理员来讲尤为重要,熟练掌握其正则表达式的写法,用以实现正则表达式的写法,能够大大地减轻我们完成数据库操作的工作量。


数据运维技术 » Oracle正则表达式中文书写实战(oracle正则匹配中文)