SQLServer中使用javascript脚本验证数据
发布时间:2020-12-12 15:51:44 所属栏目:MsSql教程 来源:网络整理
导读:SQLServer中用sp_OACreate等一系列系统存储过程可以调用服务器上的Com对象,因此可以通过调用COM使得T-SQL站在巨人的肩膀上,但这需要很高的权限。 比如下面的测试脚本示范了通过调用javascript来实现用正则表达式验证数据表中Email的功能,你如果用过系统函
SQLServer中用sp_OACreate等一系列系统存储过程可以调用服务器上的Com对象,因此可以通过调用COM使得T-SQL站在巨人的肩膀上,但这需要很高的权限。 比如下面的测试脚本示范了通过调用javascript来实现用正则表达式验证数据表中Email的功能,你如果用过系统函数中类似isdate,isnumeric之类的功能就会去努力尝试用同样方便的方法实现自己的特定验证。 --如果SQL2005提示没有权限则打开Ole Automation Procedures --exec sp_configure 'show advanced options',1 --reconfigure --exec sp_configure 'Ole Automation Procedures',1 --reconfigure --测试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 -----------------------*/ Com能够实现的功能很多,有人会用sqlserver调用xmlhttp去获取网页数据,还有人用office组件去做简体和繁体的转换,甚至可以自己开发Com组件,但那样还不如去写扩展存储过程了。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |