sql中' 的问题

存储过程报错,找原因找了好久,以后是 ' 好的问题。结果发现是变量长度不够。不过对 ‘  的应用有了新的理解。转发一篇关于  '  应用的文章

 

1、 ' '是字符界定符,告诉SQL你输入的是字符,SQL已经知道@sitemtext是字符类型,所以不需要。 
2、LIKE   '%XXX% '   可以拆分为   '% '   +   'XXX '   +   '% ', 'XXX '   =   @sitemtext。 
3、EXEC执行字符串:@sitemtext对于EXEC来说变量,但对于EXEC内部的字串指令来说,它是常量,在运行EXEC之前,@sitemtext必然有个确定值(比如@sitemtext= 'TEST '),如果用1点代替3点,则变成“……NID   =   TEST……”,那字串指令将TEST解析为对象名。 
4、道理同上。 

比较笨的方法(也是避免错误的最佳方法): 
A、全部先不加点: 
        exec   (declare   mycursor   cursor   for   select   top   @maxitems   SID,NID,NTime   from   (select   top   @mycount   *   from   V_PC_DOWNUPDATE   where   BName   like   '%@sitemtext+% ')   as   MyTable   order   by   NTime   desc) 
B、加首尾两点: 
        exec   ( 'declare   mycursor   cursor   for   select   top   @maxitems   SID,NID,NTime   from   (select   top   @mycount   *   from   V_PC_DOWNUPDATE   where   BName   like   '%@sitemtext+% ')   as   MyTable   order   by   NTime   desc ') 
C、给字串指令解析为数字的变量加1点: 
        exec   ( 'declare   mycursor   cursor   for   select   top   '   +   @maxitems   +   '   SID,NID,NTime   from   (select   top   '   +   @mycount   +   '   *   from   V_PC_DOWNUPDATE   where   BName   like   '%@sitemtext+% ')   as   MyTable   order   by   NTime   desc ') 
C、给字串指令解析为字符的变量加3点: 
        exec   ( 'declare   mycursor   cursor   for   select   top   '   +   @maxitems   +   '   SID,NID,NTime   from   (select   top   '   +   @mycount   +   '   *   from   V_PC_DOWNUPDATE   where   BName   like   ' '% '   +   @sitemtext   +   '% ' ')   as   MyTable   order   by   NTime   desc ') 
D、检查在()里面,除了变量和“+”号,全部变成红色。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值