sql中' 的有关问题

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、检查在()里面,除了变量和“+”号,全部变成红色。