2010-04-06 11 views
5

Ho una semplice funzione CLR per fare Regex corrispondenzaÈ possibile creare un nuovo operatore T-SQL utilizzando il codice CLR in 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); 
} 

Mi permette di scrivere una dichiarazione come SQL.

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

Sto solo pensando che sarebbe stato bello per riformulare la query in modo che possa essere chiamato come

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

E 'possibile creare nuovi operatori di confronto utilizzando il codice CLR. (Sto cercando di indovinare dalla mia breve occhiata giro per il web che la risposta è NO , ma nessun danno chiedendo)

risposta

6

No non si può. È possibile creare funzioni, stored procedure, trigger e così via, ma non è possibile creare nuovi operatori o comandi T-SQL. Neanche in SQL Server 2008R2, per quanto ne so.

+0

applausi vinaccia, pensato tanto. Grazie. –

Problemi correlati