Oracle Database 10g 内幕:使用正规表达式编写更好的 SQL

OracleDatabase10g内幕:

使用正规表达式编写更好的SQL

作者:AliceRischert

OracleDatabase10g中的正规表达式特性是一个用于处理文本数据的强大工具

OracleDatabase10g的一个新特性大大提高了您搜索和处理字符数据的能力。这个特性就是正规表达式,是一种用来描述文本模式的表示方法。很久以来它已在许多编程语言和大量UNIX实用工具中出现过了。

Oracle的正规表达式的实施是以各种SQL函数和一个WHERE子句操作符的形式出现的。如果您不熟悉正规表达式,那么这篇文章可以让您了解一下这种新的极其强大然而表面上有点神秘的功能。已经对正规表达式很熟悉的读者可以了解如何在OracleSQL语言的环境中应用这种功能。

什么是正规表达式?

正规表达式由一个或多个字符型文字和/或元字符组成。在最简单的格式下,正规表达式仅由字符文字组成,如正规表达式cat。它被读作字母c,接着是字母a和t,这种模式匹配cat、location和catalog之类的字符串。元字符提供算法来确定Oracle如何处理组成一个正规表达式的字符。当您了解了各种元字符的含义时,您将体会到正规表达式用于查找和替换特定的文本数据是非常强大的。

验证数据、识别重复关键字的出现、检测不必要的空格,或分析字符串只是正规表达式的许多应用中的一部分。您可以用它们来验证电话号码、邮政编码、电子邮件地址、社会安全号码、IP地址、文件名和路径名等的格式。此外,您可以查找如HTML标记、数字、日期之类的模式,或任意文本数据中符合任意模式的任何事物,并用其它的模式来替换它们。

用OracleDatabase10g使用正规表达式

您可以使用最新引进的OracleSQLREGEXP_LIKE操作符和REGEXP_INSTR、REGEXP_SUBSTR以及REGEXP_REPLACE函数来发挥正规表达式的作用。您将体会到这个新的功能如何对LIKE操作符和INSTR、SUBSTR和REPLACE函数进行了补充。实际上,它们类似于已有的操作符,但现在增加了强大的模式匹配功能。被搜索的数据可以是简单的字符串或是存储在数据库字符列中的大量文本。正规表达式让您能够以一种您以前从未想过的方式来搜索、替换和验证数据,并提供高度的灵活性。

正规表达式的基本例子

在使用这个新功能之前,您需要了解一些元字符的含义。句号(.)匹配一个正规表达式中的任意字符(除了换行符)。例如,正规表达式a.b匹配的字符串中首先包含字母a,接着是其它任意单个字符(除了换行符),再接着是字母b。字符串axb、xaybx和abba都与之匹配,因为在字符串中隐藏了这种模式。如果您想要精确地匹配以a开头和以b结尾的一条三个字母的字符串,则您必须对正规表达式进行定位。脱字符号(^)元字符指示一行的开始,而美元符号($)指示一行的结尾(参见表1)。因此,正规表达式^a.b$匹配字符串aab、abb或axb。将这种方式与LIKE

相关推荐