1

这是关于将 RegEx 嵌入 SQL 语句的 3 部分问题。

  1. 如何将 RegEx 表达式嵌入到 Oracle PL/SQL 选择语句中,该语句将解析出下面显示的文本字符串中的“DELINQUENT”字符串?

  2. 如果在关键任务业务事务中使用,会对性能产生什么影响?

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


亲爱的拉里:

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

ABC 检测到您的一种产品在 KS 状态下的状态发生了变化。请查看以下信息以确定此状态更改是否有意。

实体名称:Oracle Systems, LLC

以前的状态:--

当前状态:拖欠

提醒一下,您可以联系您的 ABC 团队以寻求帮助以纠正任何拖欠行为,或在需要时恢复服务。或者,如果系统不打算继续进入此状态,请通知 ABC 以便我们停止服务。

亲切的问候,

服务团队 1 ABC

- 请不要回复这封邮件。这不是一个受监控的电子邮件帐户。--

注意:ABC Corporation 无法独立验证由负责的政府机构维护的公共信息或这些警报所依据的其他数据来源的及时性、准确性或完整性。

4

5 回答 5

1

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

但是如果你确信你需要正则表达式,你可以使用:

REGEXP_INSTR
REGEXP_REPLACE
REGEXP_SUBSTR

(仅在 Oracle 10g 及更高版本中可用)

SELECT emp_id, text
  FROM employee_comment
 WHERE REGEXP_LIKE(text,'...-....');
于 2008-09-16T23:24:42.330 回答
1

如果我没记错的话,可以在 c#/vb 中为 SQL Server 编写 UDF。这是一个链接,虽然可能不是最好的:http ://www.novicksoftware.com/coding-in-sql/Vol3/cis-v3-N13-dot-net-clr-in-sql-server.htm

于 2008-09-30T07:41:37.747 回答
0

为什么不将 INSTR(对于 Oracle)或 CHARINDEX(对于 SQL Server)与 SUBSTRING 结合使用?似乎更直接(并且可移植,因为它在旧版本中受支持)。

http://www.techonthenet.com/oracle/functions/instr.phphttp://www.adp-gmbh.ch/ora/sql/substr.html

http://www.databasejournal.com/features/mssql/article.php/3071531http://msdn.microsoft.com/en-us/library/ms187748.aspx

于 2008-09-16T14:42:19.993 回答
0

INSTR 和 CHARINDEX 是很好的替代方法,但我想探索嵌入 Regex 的好处。

于 2008-09-16T15:04:39.300 回答
0

在 MS SQL 中,您可以使用其中包含一些“模式匹配”的 LIKE。我猜甲骨文也有类似的东西。它不是正则表达式,但具有一些匹配功能。(注意:它不是特别快).. 全文搜索也可以是一种选择(同样是 MS SQL)(在大型数据库的上下文中可能是一种更快的方式)

于 2008-09-16T17:30:12.400 回答