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
*/
分享到:
相关推荐
本篇文章是对SQLServer中的Scanf与Printf进行了详细的分析介绍,需要的朋友参考下
51单片机实现scanf和printf函数,在需要格式化输出输入时使用,方便很多,不必在进行取余取整运算,而且输出格式自定义,跟windows下的使用方法一样。
模拟printf和scanf可变参函数的实现
验证指针在函数中的用法 运行平台:Borland C++ Builder 6.0 调试时间:1:13AM 05/27/2005 调试目的:为验证指针在函数中的用法 源程序为适应C++ Builder 6.0,故作了稍微修改。
标准输入输出函数%[]和%n说明符的使用方法 scanf fscanf,均从第一个非空格的可显示字符开始读起!
1.volatile 特点:告诉编译器不要对变量的访问进行优化,每次都只从内存中取 1.register变特点:存在CPU寄存器,访问可能提速 2.因为reg
整型(int、long int 、short等)下十进制、八进制、十六进制的输入输出控制符
将printf和scanf重定向串口,直接打印到串口,方便调试,非常好用。自己写的,求下载啊
STM32实现printf和scanf源代码,保证能运行
输入一个数字,求出它的阶乘
解决VS2015、VS2013、VS2012中使用scanf/printf 等函数时。编译无法通过所产生的错误。 通过在项目属性中加入 _CRT_SECURE_NO_WARNINGS 即可解决这个问题。 编译器编译时的错误如下: 严重性 代码 说明 项目 文件...
汇编语言调用C的printf和scanf函数时需要include vcIO.inc但是有时候编译环境没有这个文件。
C语言printf与scanf讲解.pdf
cin 、cout 基本说明: cin代表标准输入设备,使用提取运算符 “>>” 从设备键盘... scanf是格式化输入,printf是格式化输出,包含在头文件中。 因为scanf是用指针操作的,没有类型安全机制,比如一个char类型
电子-MSP430程序库四printf和scanf函数移植.pdf,单片机/嵌入式MSP430
C语言中Printf和Scanf的使用方法详细.doc
ARC STM32 UART,串口实例, 实现 printf, scanf, 使用标准库
scanf函数是C语言中的一个非常常用的函数,它可以从标准输入中读取数据,并将其存储在变量中。在Python中,我们可以使用scanf函数来实现类似的功能。 在Python中,scanf函数并不是一个内置函数,但我们可以使用第三...