(495) 925-0049, ITShop интернет-магазин 229-0436, Учебный Центр 925-0049
  Главная страница Карта сайта Контакты
Поиск
Вход
Регистрация
Рассылки сайта
 
 
 
 
 

Работа с регулярными выражениями в 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

Ссылки по теме


 Распечатать »
 Правила публикации »
  Написать редактору 
 Рекомендовать » Дата публикации: 12.07.2012 
 

Магазин программного обеспечения   WWW.ITSHOP.RU
Microsoft Office для дома и учебы 2019 (лицензия ESD)
Microsoft Office 365 для Дома 32-bit/x64. 5 ПК/Mac + 5 Планшетов + 5 Телефонов. Подписка на 1 год.
Microsoft Windows Professional 10, Электронный ключ
Microsoft 365 Apps for business (corporate)
Microsoft 365 Business Standard (corporate)
 
Другие предложения...
 
Курсы обучения   WWW.ITSHOP.RU
 
Другие предложения...
 
Магазин сертификационных экзаменов   WWW.ITSHOP.RU
 
Другие предложения...
 
3D Принтеры | 3D Печать   WWW.ITSHOP.RU
 
Другие предложения...
 
Новости по теме
 
Рассылки Subscribe.ru
Информационные технологии: CASE, RAD, ERP, OLAP
Безопасность компьютерных сетей и защита информации
Новости ITShop.ru - ПО, книги, документация, курсы обучения
Программирование на Microsoft Access
CASE-технологии
eManual - электронные книги и техническая документация
Проект mic-hard - все об XP - новости, статьи, советы
 
Статьи по теме
 
Новинки каталога Download
 
Исходники
 
Документация
 
 



    
rambler's top100 Rambler's Top100