`
daniel.wuz
  • 浏览: 103327 次
  • 性别: Icon_minigender_1
  • 来自: 纽约
最近访客 更多访客>>
社区版块
存档分类

[转]Oracle10g支持SQL正则表达式

阅读更多

转自天极网dig.yesky.com/452811.htm

 

Oracle 8 和Oracle 9i中缺乏灵活性的SQL 正则表达式最终在Oracle 10g中得到了解决。Oracle 数据库目前内建了符合POSIX 标准的正则表达式。 POSIX 正则表达式由标准的元字符(metacharacters)所构成:

  四个新的函数分别是:REGEXP_LIKE、REGEXP_INSTR、REGEXP_SUBSTR、和 REGEXP_REPLACE。它们在用法上与Oracle SQL 函数LIKE、INSTR、SUBSTR 和REPLACE 用法,但是它们使用POSIX 正则表达式代替了老的百分号(%)和通配符(_)字符。

 

  • '^' 表示字符串的开始
  • '$' 表示字符串的结束
  • '.' 表示任何字符
  • 字符的范围,比如说'[a-z]',表示任何ASCII 小写字母,与字符类"[[:lower:]]"" 等价
  • '?' 允许一个后继字符匹配零次或一次
  • '+' 允许一个后继字符匹配一次或多次
  • '*' 表示零次或多次

  可以使用"{m,n}" 指定一个精确地出现范围,其意思是“出现从m 次到n 次”;"{m}" 表示“正好m次”;而"{m,}" 表示“至少m次”。还可以使用圆括号组合字符的集合,使用"|"(竖线)表示可替换。例如,字符串'^([a-z]+|[0-9]+)$'将匹配所有由小写字母或数字组合成的字符串。

  REGEXP_LIKE 与LIKE 操作符相似。如果第一个参数匹配正则表达式它就解析为TRUE。例如WHERE REGEXP_LIKE(ENAME,'^J[AO]','i') 将在ENAME 以JA 或JO 开始的情况下返回一行数据。'I' 参数指定正则表达式是大小写敏感的。另外还可以在CHECK 约束和函数索引中指定REGEXP_LIKE。例如:

ALTER TABLE EMP ADD CONSTRAINT REGEX01

CHECK (REGEXP_LIKE(ENAME,'^[[:alpha:]]+$'));

  这条语句使得ENAME 字段只能包含字母和数字字符(也就是说没有空格或者标点符号)。试图插入或者更新这些数据将导致一个ORA-2290 异常,或者检查约束的有效性。

REGEXP_INSTR 与INSTR 函数类似。它返回一个字符串中匹配一个正则表达式的第一个子串的开始位置。例如:

  SELECT REGEXP_INSTR('The total is $400 for your purchase.','$[[:digit:]]+')

  FROM DUAL;

  这个查询返回14,即$400在字符串的开始位置。另外还可以指定子串出现的次数;开始搜索的位置;是返回匹配的位置还是返回匹配之后字符的位置。

  REGEXP_SUBSTR 返回匹配一个正则表达式的子串。虽然结合使用SUBSTR 和REGEXP_INSTR 及LENGTH 也可以实现这一功能,但是使用这个函数却更为简单。

  SELECT REGEXP_INSTR('one,two,three','[^,]*') FROM DUAL;

  这个查询返回'one',将第一个参数看成一个逗号分隔的列表并返回第一个逗号之前的所有字符。

  REGEXP_REPLACE 返回初始参数被匹配子串替换之后的结果。例如:

SELECT REGEXP_REPLACE('The temperature is 23°F',

'([[:digit:]])+°F',

('\1'-32)*5/9||'°C')

FROM DUAL;

  这个查询将查找一个华氏温度并将其转换为摄氏度。它将返回:'The temperature is -5°C'。

<script language="JavaScript"> var atrtitle = "Oracle10g支持SQL正则表达式"; </script>

评论

相关推荐

    ORACLESQL正则表达式.pdf

    ORACLE SQL正则表达式.pdf 正则表达式是在 Oracle 10g 中添加的新特性,用于匹配字符串中的模式。下面是 ORACLE SQL 正则表达式的相关知识点: 匹配字符 * `[:alnum:]` 匹配任何字母和数字 * `[:alpha:]` 匹配...

    Oracle 10g 针对正则表达式的支持分析

    ### Oracle 10g 对正则表达式的支持分析 #### 一、引言 随着信息技术的发展,数据库管理系统(DBMS)的功能也在不断扩展和完善。Oracle Database 作为业界领先的数据库产品之一,在其10g版本中引入了对正则表达式...

    Oracle数据库正则表达式

    从 Oracle 10g 开始,Oracle 内建了符合 IEEE POSIX (Portable Operating System for Unix)标准的正则表达式,同时也支持 Perl 的正则表达式规则。 正则表达式的组成 ----------------- 正则表达式由一个或多个...

    Oracle正则表达式详解(用法+实例)

    Oracle 10g 引入了一系列新的函数来支持正则表达式的使用,包括 `REGEXP_LIKE`、`REGEXP_INSTR`、`REGEXP_SUBSTR` 和 `REGEXP_REPLACE`。这些函数的使用方式类似于传统的 SQL 函数 `LIKE`、`INSTR`、`SUBSTR` 和 `...

    Oracle Database 10g 中的正则表达式

    在Oracle 10g中,正则表达式通过SQL函数和WHERE子句操作符实现,为数据验证、模式查找、替换提供了前所未有的灵活性。 1. 正则表达式基础 正则表达式由字符文字和元字符组成。简单的正则表达式如"cat"可以匹配包含...

    Oracle中使用正则表达式

    Oracle数据库自10g版本开始引入了对正则表达式的支持,这一功能极大地增强了数据库在文本处理方面的能力。正则表达式是一种非常灵活且强大的工具,用于模式匹配、搜索以及替换等操作。在Oracle中使用正则表达式可以...

    Oracle正则表达式函数全面解析

    本文将详细介绍Oracle数据库中支持的四个主要正则表达式函数:`REGEXP_LIKE`、`REGEXP_INSTR`、`REGEXP_SUBSTR`和`REGEXP_REPLACE`,以及如何使用POSIX正则表达式。 #### 二、Oracle正则表达式基础 ##### 1. POSIX...

    正则表达式在oracle中的应用

    Oracle数据库提供了一个谓词`REGEXP_LIKE`来支持正则表达式的模式匹配。例如,为了查询姓名字段以字母A、B、C或D开头并且以字母P结尾的所有记录,可以使用以下SQL语句: ```sql SELECT * FROM Table1 WHERE REGEXP_...

    ORACLE.PLSQL正则表达式概述

    在ORACLE的PL/SQL环境中,正则表达式被集成到其函数库中,为数据库管理员和开发人员提供了处理复杂字符串模式的强大能力。 ### ORACLE.PLSQL中的正则表达式功能 #### 1. **正则表达式支持的函数** ORACLE.PLSQL中...

    oracle正则表达式

    Oracle数据库系统支持强大的正则表达式功能,这些功能在数据查询和处理中起着至关重要的作用。Oracle中的正则表达式主要通过内置的SQL函数来实现,如REGEXP_LIKE、REGEXP_SUBSTR、REGEXP_REPLACE等。这些函数使得...

    oracle正则表达式总结

    Oracle数据库从10g版本开始引入了正则表达式的支持,极大地增强了SQL语言处理文本的能力。正则表达式是一种强大的文本处理工具,能够帮助我们执行复杂的字符串搜索和替换任务。在Oracle中,主要通过四个新的函数来...

    Oracle 10g正则表达式

    Oracle 10g引入了对正则表达式的支持,使得在数据库查询中处理复杂匹配变得更加简单。在10g版本之前,我们通常依赖`LIKE`和通配符`%`和`_`来完成此类任务,但正则表达式提供了更强大的功能和灵活性。 在Oracle 10g...

    完全自动的正则表达式编写工具

    PLSQL.jgcscs、PHPsolo.jgcscs、Ruby.jgcscs分别对应Oracle的PL/SQL、PHP和Ruby语言的正则表达式配置,确保在这些语言中使用的正则表达式能够准确无误地工作。 总的来说,这个“完全自动的正则表达式编写工具”是一...

    oracle_10g正则表达式_REGEXP_LIKE_用法

    Oracle 10g支持多种正则表达式相关的函数,包括但不限于: 1. **`REGEXP_LIKE`**:用于判断一个字符串是否符合特定的正则表达式模式。 2. **`REGEXP_INSTR`**:用于查找一个字符串中满足正则表达式模式的第一个位置...

    正则表达式从入门到精通

    虽然标准SQL不直接支持正则表达式,但许多数据库系统如MySQL、PostgreSQL、Oracle和SQL Server提供了扩展函数来实现正则表达式的功能,如MySQL的`REGEXP`或SQL Server的`PATINDEX`。 在毕业设计中,正则表达式是一...

    数据库url正则表达式校验

    该文档是针对mysql和oracle数据库url地址的校验问题。

    Oracle 10g正则表达式函数

    Oracle 10g 正则表达式函数 Oracle 10g 正则表达式函数是 Oracle 数据库中的一种功能强大且灵活的字符串处理函数。它可以实现复杂的字符串匹配和提取功能,非常适合处理非结构化数据。 1. 元字符 在 Oracle 10g ...

    Oracle的正则表达式

    Oracle的正则表达式在数据库查询和数据处理中扮演着重要的角色,它是Oracle SQL和PL/SQL中的一个强大工具,用于匹配和操作字符串。本文将深入探讨Oracle中的正则表达式,包括其基本语法、常见操作符以及在实际应用中...

    Oracle DBA必知必会的正则表达式

    在Oracle 10g及其后续版本中,正则表达式的功能被内置到数据库系统中,这使得Oracle DBA能够更加高效地管理和操作数据。 #### 二、正则表达式相对于通配符的优势 正则表达式相比于传统的通配符具有更多的优势: 1...

Global site tag (gtag.js) - Google Analytics