Если кто-то заинтересован в использовании регулярных выражений с CLR, вот решение. Приведенная ниже функция (C# .net 4.5) возвращает 1, если шаблон соответствует, и 0, если шаблон не соответствует. Я использую его для пометки строк в подзапросах. Атрибут SQLfunction сообщает серверу sql, что этот метод является фактической пользовательской функцией, которую будет использовать сервер SQL. Сохраните файл как dll в месте, где вы можете получить к нему доступ из студии управления.
// default using statements above
using System.Data.SqlClient;
using System.Data.SqlTypes;
using Microsoft.SqlServer.Server;
using System.Text.RegularExpressions;
namespace CLR_Functions
{
public class myFunctions
{
[SqlFunction]
public static SqlInt16 RegexContain(SqlString text, SqlString pattern)
{
SqlInt16 returnVal = 0;
try
{
string myText = text.ToString();
string myPattern = pattern.ToString();
MatchCollection mc = Regex.Matches(myText, myPattern);
if (mc.Count > 0)
{
returnVal = 1;
}
}
catch
{
returnVal = 0;
}
return returnVal;
}
}
}
В студии управления импортируйте файл dll с помощью программируемости - сборки - новая сборка
Затем запустите этот запрос:
CREATE FUNCTION RegexContain(@text NVARCHAR(50), @pattern NVARCHAR(50))
RETURNS smallint
AS
EXTERNAL NAME CLR_Functions.[CLR_Functions.myFunctions].RegexContain
Затем у вас должен быть полный доступ к функции через базу данных, в которой вы сохранили сборку.
Затем используйте в таких запросах:
SELECT *
FROM
(
SELECT
DailyLog.Date,
DailyLog.Researcher,
DailyLog.team,
DailyLog.field,
DailyLog.EntityID,
DailyLog.[From],
DailyLog.[To],
dbo.RegexContain(Researcher, '[\p{L}\s]+') as 'is null values'
FROM [DailyOps].[dbo].[DailyLog]
) AS a
WHERE a.[is null values] = 0
person
Matt Farguson
schedule
16.06.2015
SAFE, а не помеченных какEXTERNAL_ACCESSилиUNSAFE(поскольку я понимаю, почему эти два последних набора разрешений будут проблематичными для среды общего хостинга). База данных Microsoft Azure SQL V12 (т. е. новая версия на конец 2014 г.), которая является общей средой, позволяет использовать сборки, помеченные какSAFE(и загружаемые черезFROM 0x..., а не из DLL, поскольку вы не можете загрузить DLL). НоSAFE— это все, что нужно для регулярных выражений и МНОЖЕСТВА других очень полезных функций. - person Solomon Rutzky   schedule 05.06.2015