是否可以在SQL Server中使用CLR代码创建新的T-SQL运算符?

Eoi*_*ell 5 sql sql-server sqlclr sql-server-2008

我有一个非常简单的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);
}
Run Code Online (Sandbox Code Playgroud)

它允许我编写一个SQL语句.

SELECT * FROM dbo.table1 WHERE dbo.RegexMatch(column1, '[0-9][A-Z]') = 1
-- match entries in col1 like 1A, 2B etc...
Run Code Online (Sandbox Code Playgroud)

我只是认为重新构造该查询会很好,所以可以调用它

SELECT * FROM dbo.table1 WHERE column1 REGEXLIKE '[0-9][A-Z]'
Run Code Online (Sandbox Code Playgroud)

是否可以使用CLR代码创建新的比较运算符.(我猜测从我在网上看到的答案是否定的,但没有任何伤害)

mar*_*c_s 6

你不能.您可以创建函数,存储过程,触发器等等 - 但是没有规定可以创建新的T-SQL运算符或命令.据我所知,不在SQL Server 2008R2中.