Каков наилучший подход для встраивания RegEx в Oracle или SQL Server 2005 SQL? - PullRequest
1 голос
/ 16 сентября 2008

Это вопрос из 3 частей, касающийся встраивания RegEx в операторы SQL.

  1. Как вы встраиваете выражение RegEx в Oracle PL / SQL выберите утверждение, которое будет разобрать строка «DELINQUENT» в тексте строка показанная ниже?

  2. Какое влияние на производительность оказывает использование в критически важный бизнес сделка

  3. С встраиванием регулярных выражений в SQL был введен в Oracle 10g и SQL Server 2005, это считается рекомендуемой практикой?


Дорогой Ларри:

Благодарим Вас за использование службы оповещений ABC.

ABC обнаружила изменение статуса одного из ваших продуктов в штате KS. Пожалуйста, просмотрите информация ниже, чтобы определить, было ли это изменение предназначено.

ИМЯ ОРГАНИЗАЦИИ: Oracle Systems, LLC

ПРЕДЫДУЩИЙ СТАТУС: -

ТЕКУЩИЙ СТАТУС: ДЕЛИКВЕНТ

В качестве напоминания вы можете обратиться к команде ABC за помощью в исправлении любых правонарушений или, при необходимости, в восстановлении сервис. В качестве альтернативы, если система не намерена продолжать использовать это состояние, пожалуйста, сообщите ABC чтобы мы могли прекратить наши услуги.

С уважением,

Сервисная команда 1 ABC

- ПОЖАЛУЙСТА, НЕ ОТВЕЧАЙТЕ НА ЭТУ ПОЧТУ. ЭТО НЕ МОНИТОРИРОВАННАЯ УЧЕТНАЯ ЗАПИСЬ .--

Примечание: ABC Corporation не может самостоятельно проверить своевременность, точность или полноту публичной информации поддерживается ответственным государственным органом или другими источниками данных, на которых основаны эти предупреждения.

Ответы [ 5 ]

1 голос
/ 30 сентября 2008

Если я правильно помню, можно написать UDF на c # / vb для SQL Server. Вот ссылка, хотя, возможно, и не самая лучшая: http://www.novicksoftware.com/coding-in-sql/Vol3/cis-v3-N13-dot-net-clr-in-sql-server.htm

1 голос
/ 17 сентября 2008

Зачем вам здесь регулярные выражения? INSTR и SUBSTR отлично справятся с этой задачей.

Но если вы уверены, что вам нужны Regex'ы, вы можете использовать:

REGEXP_INSTR
REGEXP_REPLACE
REGEXP_SUBSTR

(доступно только в Oracle 10g и выше)

SELECT emp_id, text
  FROM employee_comment
 WHERE REGEXP_LIKE(text,'...-....');
0 голосов
/ 16 сентября 2008

INSTR и CHARINDEX - отличные альтернативные подходы, но я хотел бы изучить преимущества встраивания Regex.

0 голосов
/ 16 сентября 2008

В MS SQL вы можете использовать LIKE, в котором есть «сопоставление с образцом». Я предполагаю, что у Oracle есть нечто подобное. Это не Regex, но имеет некоторые соответствующие возможности. (Примечание: это не особенно быстро). Полнотекстовый поиск также может быть опцией (опять же, MS SQL) (вероятно, гораздо более быстрый способ в контексте базы данных хорошего размера)

0 голосов
/ 16 сентября 2008

Почему бы просто не использовать INSTR (для Oracle) или CHARINDEX (для SQL Server) в сочетании с SUBSTRING? Кажется немного более простым (и переносимым, поскольку поддерживается в более старых версиях).

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...