我有一个非常简单的CLR函数来进行正则表达式匹配
public static SqlBoolean RegExMatch(SqlString input, SqlString pattern)
{
if (input.IsNull || pattern.IsNull)
return SqlBoolean.False;
return Regex.IsMatch(input.Value, pattern.Value, RegexOptions.IgnoreCase);
}
它允许我编写一个类似SQL语句。
SELECT * FROM dbo.table1 WHERE dbo.RegexMatch(column1, '[0-9][A-Z]') = 1
-- match entries in col1 like 1A, 2B etc...
我只是认为重新构造该查询会很好,所以它可以被称为
SELECT * FROM dbo.table1 WHERE column1 REGEXLIKE '[0-9][A-Z]'
是否可以使用CLR代码创建新的比较运算符。 (我猜测我在网上的简短一瞥是答案是 没有 ,但没有害处要求)
答案 0 :(得分:6)
不,你不能。您可以创建函数,存储过程,触发器等等 - 但是没有规定创建新的T-SQL运算符或命令。据我所知,不在SQL Server 2008R2中。
答案 1 :(得分:0)
在此链接中,您可以看到如何在SQLCLR中声明运算符: http://msftengprodsamples.codeplex.com/wikipage?title=SS2008!User-Defined%20Data%20Type%20(UDT)%20Sample&referringTitle=Home
例如:
public static SqlBoolean operator ==(ComplexNumber c1, ComplexNumber c2)
{
return c1.Equals(c2);
}