仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 2510|回复: 8
打印 上一主题 下一主题

[学习教程] MSSQL教程之用自界说函数交换SQL中的全角数字为半角...

[复制链接]
透明 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:40:56 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
上面我们说了DML的闪回方案。但对于DDL却无能为力,对于大多数的DDL,即使是rowbase格式,二进制日志binlog中仍只记录语句本身。对于删表操作,只记录一个语句droptablet。仅凭这句话,无法还原表的数据。函数
在我们利用MSSQL的时分,偶然表中有一些是全角的数字,但我们的体系不克不及够准确的利用它们,这时候我们要把他们交换为半角数字。而SQL本人仿佛没有这个函数。

没有,我们本人下手:

上面就是我本人写的一个函数,固然,我的数据量小,没有思索功能!

--把全角数据转换成半角数字(注重,这个只能转换满是全角的,在第一个半角数据时前往)--公司:石家庄创联科技--编写:牛昆亮QQ:273352165

createfunctionufn_convertWideNumericToAnsi(@vstrInvarchar(1000))returnsvarchar(4000)asbegindeclare@strReturnvarchar(4000),@binvarbinary(4000),@strvarchar(4000),@stmpvarchar(4),@iint,@lenint--,@vstrInvarchar(1000)

--set@vstrIn=031851001845set@strReturn=set@bin=convert(varbinary(4000),@vstrIn)execmaster..xp_varbintohexstr@bin,@stroutselect@str=stuff(@str,1,2,)set@len=len(@str)set@i=1while@i<@lenbeginset@stmp=substring(@str,@i,4)if(substring(@stmp,1,1)A)return@vstrInset@stmp=replace(@stmp,A,)set@stmp=replace(@stmp,B,)--print@stmpset@stmp=cast((convert(int,@stmp)-30)asvarchar(1))set@strReturn=@strReturn+@stmpset@i=@i+4end--print@strReturnreturn@strReturnend

示例

select031851001845asORG,dbo.ufn_convertWideNumericToAnsi(031851001845)DES

ORGDES---------------------------------------------------031851001845031851001845
有了数据以后,我们就要想一个比较统一的方法来闪回。上面我们说了对于DML操作,可以通过反向执行所有逆操作来实现,对于语句里面的DDL,只能直接跳过。原因是一个DDL不一定有直接的逆操作。
活着的死人 该用户已被删除
沙发
发表于 2015-1-17 21:13:30 | 只看该作者
如安全管理、备份恢复、性能监控和调优等,SQL只要熟悉基本操作就可以,只要程序设计部分只要稍加了解即可(如存储过程、触发器等)。
灵魂腐蚀 该用户已被删除
板凳
发表于 2015-1-21 08:36:16 | 只看该作者
对一张百万级别的表建游标,同时又没有什么过滤条件,取得游标效率是如果直接SQL查询百万条数据;如果再对每条记录做处理,耗时将更长。
变相怪杰 该用户已被删除
地板
发表于 2015-1-30 12:37:31 | 只看该作者
可以动态传入参数,省却了动态SQL的拼写。
金色的骷髅 该用户已被删除
5#
发表于 2015-2-16 02:42:41 | 只看该作者
数据库物理框架没有变动undo和redo都放在数据库得transaction中,个人感觉是个败笔。如果说我们在设计数据库的时候考虑分多个数据库,可能能在一定程度上避免I/O效率问题。
蒙在股里 该用户已被删除
6#
发表于 2015-3-4 23:06:58 | 只看该作者
一直以来个人感觉SQLServer的优化器要比Oracle的聪明。SQL2005的更是比2k聪明了不少。(有次作试验发现有的语句在200万级时还比50万级的相同语句要快show_text的一些提示没有找到解释。一直在奇怪。)
只想知道 该用户已被删除
7#
发表于 2015-3-11 21:17:36 | 只看该作者
记得在最开始使用2k的时候就要用到这个功能,可惜2k没有,现在有了作解决方案的朋友会很高兴吧。
柔情似水 该用户已被删除
8#
发表于 2015-3-19 13:40:48 | 只看该作者
你可以简单地认为适合的就是好,不适合就是不好。
9#
发表于 2015-3-28 05:14:10 | 只看该作者
但换公司用MSSQL2K感觉自己好像根本就不了解MSSQL。什么DTS触发器以前根本没用过。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-23 00:28

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表