La réponse courte est que non, cela ne peut pas être fait. La syntaxe de LIKE n'est pas la même chose que (et bien moins puissante que) les expressions régulières. Voir aussi Expressions régulières SQL Server dans T-SQL
Mais vous pouvez faire le saut vers .Net et y faire la correspondance. Vous pouvez instancier un VBScript.RegExp
dans T-SQL en utilisant sp_OACreate et utilisez-le.
CREATE FUNCTION dbo.isValidEmailFormat
(
@Email varchar(100)
)
RETURNS bit
AS
BEGIN
DECLARE @pattern varchar(4000)
SET @pattern = '[a-zA-Z0-9_\-][email protected]([a-zA-Z0-9_\-]+\.)+(com|org|edu|nz|au)'
DECLARE @Result bit
DECLARE @objRegexExp INT
EXEC sp_OACreate 'VBScript.RegExp', @objRegexExp OUT
EXEC sp_OASetProperty @objRegexExp, 'Pattern', @pattern
EXEC sp_OASetProperty @objRegexExp, 'IgnoreCase', 1
EXEC sp_OASetProperty @objRegexExp, 'MultiLine', 0
EXEC sp_OASetProperty @objRegexExp, 'Global', false
EXEC sp_OASetProperty @objRegexExp, 'CultureInvariant', true
EXEC sp_OAMethod @objRegexExp, 'Test', @Result OUT, @Email
EXEC sp_OADestroy @objRegexExp
RETURN @Result
END
Jetez un coup d'œil à Erreur de vérification d'e-mail Regex - en utilisant JavaScript pour voir si vous voulez être un peu moins restrictif sur les caractères autorisés.