Заменить текст на регулярное выражение в SQL Server - PullRequest
1 голос
/ 02 июня 2010

В настоящее время у меня есть столбец SQL-сервера типа nvarchar(max), текст которого начинается с

<span class="escape_<<digits>>"></span>

Единственное, что изменяется в шаблоне - это <<digits>> в имени класса.

Общая часть

<span class="myclass_ 

и закрытие

</span>

Некоторые примеры значений

<span class="myclass_12"></span>
<span class="myclass_234"></span>
<span class="myclass_4546"></span>

Эти интервальные тексты присутствуют только в начале столбца. Любые такие совпадающие промежутки в середине не должны быть удалены или сопоставлены.

Что за запрос SQL Server с регулярным выражением для удаления всех этих вхождений span?

Ответы [ 2 ]

4 голосов
/ 02 июня 2010

Если у вас есть значения, такие как

<span class="myclass_12"></span>
<span class="myclass_234"></span>
<span class="myclass_4546"></span>

и вы хотите получить только значения myclass_12 и т. Д., Используйте этот запрос:

SELECT 
    REPLACE(REPLACE(string, '<span class="', ''), '"></span>', '') 
FROM 
    dbo.YourTable

Он не основан на регулярном выражении, поскольку SQL Server / Transact-SQL по умолчанию не поддерживает сопоставление регулярному выражению. Если вам нужно и нужно сопоставление Regex всеми средствами, рассмотрите возможность создания сборки SQL-CLR, которая реализует эту функциональность в SQL Server.

4 голосов
/ 02 июня 2010

SQL Server не поддерживает регулярные выражения "из коробки".

Если вы используете SQL Server 2005 или более позднюю версию, вы можете написать функцию CLR для SQL Server и вызвать ее.

См. эту статью в журнале MSDN для получения подробной информации о том, как это сделать (SQL Server 2005> Регулярные выражения упрощают сопоставление с образцом и извлечение данных).

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