2010-04-06 7 views
5

J'ai une fonction CLR très simple pour faire CORRESPONDANCE REGEXEst-il possible de créer un nouvel opérateur T-SQL en utilisant le code CLR dans 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); 
} 

Il me permet d'écrire une instruction SQL comme.

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

Je suis juste en pensant que ce serait bien de reformuler cette requête afin qu'il puisse être appelé comme

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

Est-il possible de créer de nouveaux opérateurs de comparaison en utilisant le code CLR. (Je devine de mon bref coup d'œil sur le web que la réponse est NON , mais pas de mal demander)

Répondre

6

vous ne pouvez pas non. Vous pouvez créer des fonctions, des procédures stockées, des déclencheurs, etc. - mais il n'y a aucune possibilité de créer de nouveaux opérateurs ou commandes T-SQL. Pas dans SQL Server 2008R2 non plus, pour autant que je sache.

+0

applaudissements marc, figuré autant. Merci. –