Статья

Статья Работа с регулярными выражениями в SQL Server

Работа добавлена на сайт bukvasha.net: 2015-10-29

Поможем написать учебную работу

Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.

Предоплата всего

от 25%

Подписываем

договор

Выберите тип работы:

Скидка 25% при заказе до 27.12.2024



Работа с регулярными выражениями в SQL Server

Христофоров Юрий

В SQL Server 7/2000 нет встроенной поддержки работы с регулярными выражениями. Но SQL Server похволяет работать с COM-объектами. В VBScript (библиотека vbscript.dll) есть специальный объект для работы с регулярными выражениями - RegExp.

Ниже приведен код хранимой процедуры sp_RegExpReplace, которая позволяет заменять текст, удовлетворяющий заданному регулярному выражению на другой заданный текст в строке.

Текст процедуры sp_RegExpReplace:



CREATE PROCEDURE [dbo].sp_RegExpReplace

 @strIn1 varchar(8000),

 @strIn2 varchar(8000),

 @strPattern varchar(2000),

 @strOut varchar(8000) OUT

AS

 DECLARE @object int, @hr int

 DECLARE @src varchar(255), @desc varchar(255)

 -- создаем объект RegExp для работы с регулярными выражениями

 EXEC @hr = sp_OACreate 'VBScript.RegExp', @object OUT

 

 IF (@hr <> 0) BEGIN

         EXEC sp_OAGetErrorInfo @object, @src OUT, @desc OUT

         SELECT hr=convert(varbinary(4),@hr), Source=@src, Description=@desc

  RETURN

 END

 

 EXEC @hr = sp_OASetProperty @object, 'Pattern', @strPattern

 IF (@hr <> 0) BEGIN

         EXEC sp_OAGetErrorInfo @object, @src OUT, @desc OUT

         SELECT hr=convert(varbinary(4),@hr), Source=@src, Description=@desc

  RETURN @hr

 END

 -- будет глобальная замена

 EXEC @hr = sp_OASetProperty @object, 'Global', 1

 IF (@hr <> 0) BEGIN

         EXEC sp_OAGetErrorInfo @object, @src OUT, @desc OUT

         SELECT hr=convert(varbinary(4),@hr), Source=@src, Description=@desc

  RETURN @hr

 END

 -- вызов метода Replace

 EXEC @hr = sp_OAMethod @object, 'Replace', @strOut OUT, @strIn1, @strIn2

 IF (@hr <> 0) BEGIN

         EXEC sp_OAGetErrorInfo @object, @src OUT, @desc OUT

         SELECT hr=convert(varbinary(4),@hr), Source=@src, Description=@desc

  RETURN @hr

 END

 -- удаляем объект

 EXEC @hr = sp_OADestroy @object

 IF (@hr <> 0) BEGIN

         EXEC sp_OAGetErrorInfo @object, @src OUT, @desc OUT

         SELECT hr=convert(varbinary(4),@hr), Source=@src, Description=@desc

  RETURN @hr

 END

 RETURN 0





Необходимо учитывать, что пользователь, от имени которого будет запускаться наша процедура, должен входить в роль sysadmin (это ограничение накладывают процедуры sp_OACreate, sp_OASetProperty, sp_OAMethod, sp_OADestroy).

Протестируем процедуру sp_RegExpReplace - удалим с ее помощью из заданной строки все HTML-теги.

DECLARE @strOut varchar(8000)

EXEC sp_RegExpReplace 'Это тестовый <b>тест</b> <p> текст',

   '', '<.+?>', @strOut OUT

SELECT @strOut

GO

В результате значением переменной @strOut будет строка "Это тестовый тест текст".

Файлы SQL-скриптов прилагаются: sqlregexp.zip

Список литературы

Для подготовки данной работы были использованы материалы с сайта http://www.activex.net.ru/



1. Реферат на тему The Hospitality Industry Essay Research Paper The
2. Реферат на тему Русская революция 1905 1907
3. Реферат на тему Dawn Hand Soap Essay Research Paper Dawn
4. Реферат Вакансионное Распухание
5. Курсовая Овощные культуры
6. Курсовая Организация продвижения рекламной продукции
7. Реферат Раскол русской православной церкви причины раскола
8. Реферат на тему Traits Essay Research Paper MIKE Rinaldi
9. Реферат на тему Richard Cory Miniver Cheevy Essay Research Paper
10. Курсовая Внутрифирменное планирование 4