动态SQL语句的拼接实现

动态SQL语句的拼接实现

平常经常遇到一些语句需要使用动态语句,来实现作业任务的计划执行。例如动态表名,在分表设计时使用了月份格式(A_201912)
在实现此类格式表名的作业任务时,必须采用动态语句,以避免每月更换一次SQL语句的尴尬。现将部分实际操作经验总结如下:
一、基本语句格式:定义变量,给变量赋值,使用变量拼接SQL,语句输出
二、小技巧:通过print打印查看自己拼接的语句是否正确,以及错误在哪里,待正确时再用exec运行输出
三、难点,动态SQL的拼接的难点是需要解决引号的应用问题,也就是where条件的拼接

只要明白以下四个小语句显示出来的效果,动态SQL的拼接就比较简单了,直白的讲,就是用变量替换掉SQL执行时的where=’???‘语句里的’???'条件,遇到字符串条件或有字符串的函数就替换成变量,就OK了。

---下图中的所有'均为单引号
declare @sq nvarchar(50),@sq2 nvarchar(50),@sq3 nvarchar(50),@sq4 nvarchar(50),@nddate nvarchar(50)
 set @sq='''' 
 set @sq2=''''''
 set @sq3='''张三'''
 set @ndate=replace('2019-12','-','')
print @sq    
print @sq2      
print @sq3
print @ndate
如上代码结果分别为
(1)  '
(2)  ''
(3)  '张三'
(4)  201912 --字符串

--完整实例如下
declare @sql varchar(100),@ndate varchar(6),@condition varchar(20)
set @condition='''文件'''
set @ndate=replace('2019-12','-','')
set @sql='select * from A_'+@ndate+' where dir='+@condition
print(@sql)
--最终拼接得到的SQL语句如下
select * from A_201912 where dir='文件'
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值