浅析SQLServer中的Scanf与Printf


SQLServer中有两个扩展存储过程实现Scanf和Printf功能,恰当的使用它们可以在提取和拼接字符串时大幅度简化SQL代码。

1、xp_sscanf,用它可以分解格式相对固定的字符串,这对于厌倦使用一堆substring和charindex的朋友来说不错。比如前几天的一个帖子中提出的如何分解ip地址,相对简练且通用的代码应该是下面这样

复制代码 代码如下:

if (object_id ('f_getip' ) is not null )
drop function f_getip
go
create function dbo . f_getip (@ ip varchar (100 ))
returns @ t table (a int , b int , c int , d int )
as
begin
    set @ ip = replace (@ ip , '.' , ' ' )
    declare
    @ s1 varchar (3 ) , @ s2 varchar (3 ),
    @ s3 varchar (3 ) , @ s4 varchar (3 )
    exec xp_sscanf @ ip , '%s %s %s %s' , @ s1 output , @ s2 output , @ s3 output , @ s4 output
    insert into @ t select @ s1 , @ s2 , @ s3 , @ s4
    return
end
go
select * from dbo . f_getip ('192.168.0.1' )
go
/*
a           b           c           d
----------- ----------- ----------- -----------
192         168         0           1
*/

2、xp_sprintf,用它可以拼接出一个字符串而不用担心过多的加号很引号难以控制,比如一个动态执行sql语句的存储过程
复制代码 代码如下:

if (object_id ('p_select' ) is not null )
drop proc p_select
go
create proc p_select (@ tb varchar (100 ), @ cols varchar (100 ), @ wherecol varchar (100 ), @ value varchar (100 ))
as
begin
    declare @ s varchar (8000 )
    exec xp_sprintf @ s output , 'select %s from %s where %s=''%s''' , @ cols , @ tb , @ wherecol , @ value
    exec (@ s)
end
go
exec p_select 'sysobjects' , 'id,xtype,crdate' , 'name' , 'p_select'
/*
id          xtype crdate
----------- ----- -----------------------
898102240   P     2009-08-18 03:01:51.153
*/



相关阅读:
详解PHP的Yii框架中日志的相关配置及使用
MySQL数据库远程访问权限如何打开(两种方法)
Android利用ViewPager实现滑动广告板实例源码
浅谈如何实现easyui的datebox格式化
NodeJS中Buffer模块详解
jQuery+HTML5实现图片上传前预览效果
jQuery实现页面内锚点平滑跳转特效的方法总结
Android 几种屏幕间跳转的跳转Intent Bundle
jQuery插件pagewalkthrough实现引导页效果
Android控件系列之ImageView使用方法
win7安装软件出现错误Error 1935该怎么解决?
JQuery实现左右滚动菜单特效
给VM虚拟机中的CentOS Linux系统挂载U盘的方法图文教程
深入讲解C#编程中嵌套类型和匿名类型的定义与使用
快速导航
PHP MySQL HTML CSS JavaScript MSSQL AJAX .NET JSP Linux Mac ASP 服务器 SQL jQuery C# C++ java Android IOS oracle MongoDB SQLite wamp 交通频道 作文范文 只做自己懂的事 李开复人才观 烟花,绽放作文350字 市人民医院集体先进事迹申报材料 《功夫熊猫》影片评论作文400字 有关我的父亲的作文:我的父亲 2016党支部党员承诺书 市旅游产业发展实施意见 心中的足印作文1200字 抓源头促清廉征文 2006年中考小说阅读备考资料 胸外科护士述职报告 怦然心动的一刻作文1100字 小学六年级作文600字:读鲁滨逊漂流记有感 都市拾荒者 一个人的那场"地老天荒" 其实,我一直在等你! 出国留学计划书 初中初一作文300字:朗诵比赛 母亲,感谢一路有你 马云发年终奖 农机监理个人工作总结-个人工作总结 观电影《上学路上》有感500字 汪曾祺散文《故乡人》原文 播撒激情奉献,传承恩来文化 受伤了,别哭 潜意识与潜规则 小学六年级作文550字:三清山一游 他在笑,如此温暖过一生 思念一个朋友 “词王争霸”真好玩作文 1200字除夕来历作文:古老习俗 歇后语 以公民的名义 学习江泽民执政党建设思想座谈会发言摘要 昔日阳光下 有关秋的语句-关于描写秋天的经典语句 石缝中的小生命作文500字 有了自己的窝 县廉租住房保障工作汇报材料 2016计生幸福家庭建设方案 关于回报的作文100字 表演艺考自我介绍 淡名利(伤感语录) 想念..... QQ发红包祝福语 我的中国梦演讲稿范文精选 《空气.气球.风》到底谁是谁的故事 社会主义新农村讲话 夏作文700字

Copyright © 2016 phpStudy |