2010-04-06 35 views
5

Tengo una muy simple Función CLR para hacer expresiones regulares Coincidencia¿Es posible crear un nuevo operador T-SQL usando el código CLR en SQL Server?

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); 
} 

Se me permite escribir una declaración como SQL.

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

sólo estoy pensando que sería bueno para reformular esa consulta por lo que podría ser llamado como

SELECT * FROM dbo.table1 WHERE column1 REGEXLIKE '[0-9][A-Z]' 

¿Es posible la creación de nuevos operadores de comparación utilizando código CLR. (Supongo que de mi breve mirada alrededor de la web que la respuesta es NO , pero pidiendo ningún daño)

Respuesta

6

No, no puede. Puede crear funciones, procedimientos almacenados, disparadores, etc., pero no hay ninguna disposición para crear nuevos operadores o comandos T-SQL. No en SQL Server 2008R2 tampoco, hasta donde sé.

+0

aplausos orujo, figuraba como mucho. Gracias. –

Cuestiones relacionadas