2008-09-16 120 views
1

这是一个关于将嵌入式RegEx转换为SQL语句的3部分问题。将RegEx嵌入到Oracle或SQL Server 2005 SQL中的最佳方法是什么?

  1. 你如何嵌入一个正则表达式表达到Oracle PL/SQL select语句,将解析出 文本字符串 如下图所示的“欠费”的字符串?

  2. 如果在 任务关键业务 事务中使用了什么性能影响?

  3. 由于嵌入正则表达式 到SQL在Oracle中 10g和SQL Server 2005中引入,它被认为 推荐的做法?


亲爱的拉里:

感谢您使用ABC的提醒服务。

ABC检测到您的某个产品在KS状态中发生了变化。请查看下面的 信息以确定是否打算进行此状态更改。

实体名称:甲骨文,LLC

前的状态: -

当前状态:DELINQUENT

提醒一下,您可以联系您的ABC团队寻求帮助纠正任何拖欠或,如果需要,则恢复 该服务。或者,如果系统无意继续使用此状态,请通知ABC ,以便我们可以中止我们的服务。

亲切的问候,

服务队1 ABC

- 请不要回复此邮件。它不是一个监视的电子邮件帐户.--

注意:ABC Corporation不能独立验证由负责的政府机构或其他提供警报的数据来源所维护的公共信息 的及时性,准确性或完整性。

回答

1

为什么你需要正则表达式吗? INSTR和SUBSTR将完美地完成这项工作。

但是,如果你确信你需要Regex'es你可以使用:

REGEXP_INSTR
REGEXP_REPLACE
REGEXP_SUBSTR

(仅在Oracle 10g中提供高达)

SELECT emp_id, text 
    FROM employee_comment 
WHERE REGEXP_LIKE(text,'...-....'); 
0

INSTR和CHARINDEX都是伟大的替代办法,但我想探索嵌入正则表达式的好处。

0

在MS SQL中,您可以使用其中包含一些“模式匹配”的LIKE。我猜想Oracle有类似的东西。它不是正则表达式,但有一些匹配功能。 (注意:它并不是特别快)..全文搜索也可以是一个选项(再次MS SQL)(可能是一个更好的大小的数据库的上下文更快的方式)

相关问题