| 网站首页 | 模板 | 资料 | 源码 | 工具 | 开发 | 设计 | 安全 | 项目 | 网络 | 图片 | 系统 | 数据库 | 博客 | 会员中心 | 小说 | 
MYFTP 精品资料下载
网络学院
学习资料
源码模版
您现在的位置: 精品下载 >> 数据库 >> Oracle >> 数据库正文 用户登录 新用户注册
理解Oracle10g的SQL正则表达式支持          【字体:
理解Oracle10g的SQL正则表达式支持
作者:佚名    数据库来源:不详    点击数:    更新时间:2008-6-26

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

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

POSIX 正则表达式由标准的元字符(metacharacters)所构成:

'^' 表示字符串的开始
'$' 表示字符串的结束
'.' 表示任何字符
字符的范围,比如说'[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'。

(出处:网侠)

数据库录入:chqnet    责任编辑:chqnet 
  • 上一个数据库:

  • 下一个数据库:
  • 最新热点 最新推荐 相关数据库
    oracle修改计算机名后重启服…
    oracle 存储过程的基本语法
    oracle数据库文件中的导入\导…
    实例讲解Oracle里抽取随机数…
    Oracle 9i应用COMPOSE和UNIS…
    如何在oracle存储过程中返回…
    oracle 10g 安装中一些问题解…
    迅速安装Linux与Oracle数据库…
    ORACLE 截断字符串
    八个学习点帮助你全面认识Or…
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)