Det korta svaret är att nej, det kan inte göras. Syntaxen för LIKE är inte samma sak som (och mycket mindre kraftfull än) reguljära uttryck. Se även SQL Server Regular expressions in T-SQL
Men du kan hoppa till .Net och göra matchningen där. Du kan instansiera en VBScript.RegExp
inuti T-SQL med sp_OACreate och använd det.
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
Ta en titt på Regex e-postverifieringsfel - använder JavaScript för att se om du vill vara lite mindre restriktiv för vilka tecken som är tillåtna.