Как выбрать соответствие регулярному выражению из текста / varchar в MS SQL? - PullRequest
2 голосов
/ 03 сентября 2010

Мне нужно извлечь что-то из длинного фрагмента текста по множеству строк в базе данных Microsoft SQL Server.

Я мог бы написать сценарий для прохождения цикла и извлечь его, но я надеялся, что есть хороший простой способ сделать что-то вроде SQL:

SELECT IpAddress = matchFirst('RegEx',ColName)
FROM table
WHERE conditions


Я искал, но все, что я нахожу, - это непонятные, многословные разговоры об использовании регулярных выражений в предложении where, CLR UDF и прочее - но все, что я хочу, - это простой ответ «вставить регулярное выражение здесь».

Есть идеи?

Ответы [ 3 ]

2 голосов
/ 03 сентября 2010

Если вы ищете простое решение, я бы предложил использовать библиотеку SQL # , которая в основном содержит UDF, который вам нужен, и вы найдете ссылки в других местах.

После того, как он будет установлен (его установка будет достаточно безболезненной), вы найдете функцию RegEx_MatchSimple, которая, как я считаю, вам нужна.

1 голос
/ 03 сентября 2010

я знаю, что sql имеет хотя бы небольшую совместимость с reg-ex, поскольку вы можете делать следующее (sql 2005, 2008)

выберите * из таблицы где CharField вроде '[a-z]%'

возможно, если вы точно скажете, что вам нужно для выполнения своего регулярного выражения, кто-то может дать вам sql-эквивалент.

0 голосов
/ 03 сентября 2010

Встроенные в TSQL регулярные выражения не поддерживаются, поэтому, к сожалению, не существует немедленного способа просто сделать это.

Так что вы можете:1) написать функцию UDF, которая выполняет манипуляции со строками, чтобы попытаться проанализировать IP-адрес из предоставленной строки (т. Е. Используя функциональные возможности, которые TSQL поддерживает как PATINDEX, SUBSTRING и т. Д.) - если вы не хотите использовать SQLCLR по любой причине

2) использовать SQL CLR, чтобы позволить вам запускать регулярные выражения в запросе - потребуется сборка .NET для выполнения регулярных операций, которую затем можно подключить и вызвать напрямую из вашего запроса SQL.Код для этого уже есть во многих местах.Приносим извинения, если это то место, которое вы уже просматривали, но посмотрите на это сообщение в блоге MSDN , в котором приведен код .NET для регулярных выражений и пример его использования.А также эта статья MSDN о Как создать и запустить пользовательскую функцию CLR SQL Server

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