代码参考: --如果SQL2005提示没有权限则打开Ole Automation Procedures --exec sp_configure 'show advanced options',1 --reconfigure --exec sp_configure 'Ole Automation Procedures',1 --reconfigure --by 上善若水 --测试email create function isEmail(@value varchar(100)) returns bit as begin declare @object int declare @v bit declare @str varchar(8000) --javascript的正则表达式定义和调用语句 set @str='var reg=/^/w+[/+/./w-]*@([/w-]+/.)*/w+[/w-]*/.([a-z]{2,3}|/d+)$/i;reg.test("'+@value+'")' --调用脚本组件来执行脚本 exec sp_OACreate 'MSScriptControl.ScriptControl',@object output exec sp_OASetProperty @object, 'Language','javascript' exec sp_OAMethod @object, 'eval', @v out,@str --销毁com对象 exec sp_OADestroy @object return @v end go --测试函数 select * from( select 'aa.bb.com' as email union select 'aa@bb.com' union select 'aa.bb@com' union select 'aa@bb@com' ) a where dbo.isEmail(email)=1 go --删除测试环境 drop function isEmail go /*----------------输出结果 email --------- aa@bb.com -----------------------*/ 补充:其实sql2005有专门正则处理函数,可以参考: http://msdn.microsoft.com/zh-cn/magazine/cc163473.aspx Oracle有专门正则处理函数 regexp_replace和regexp_substr