CREATE PROCEDURE sp_queryzc  
@columnname char(10), @key varchar(600),@datefirst varchar(60),@dateend varchar(60),@paixu varchar(30)
AS
exec('select * from 自产库全集
where  ' + @columnname +  'like' +'''%'+ @key + '%'''
+ 'and  出版日期 between ' +''''+@datefirst+''''+'  and  ' + ''''+@dateend+'''')
GO我做的字段名也可以选,用了动态sql,但是老是出错,假设说我@key填写了199445,他就出现下面的错误:'%199445%' 附近有语法错误。到底是怎么回事啊,恳请帮助!!!!

解决方案 »

  1.   

    'select * from 自产库全集
    where  ' + @columnname +  ' like' +' ''%'+ RTRIM(@key) + '%'' '
    + 'and  出版日期 between ' +''''+RTRIM(@datefirst)+''''+'  and  ' + ''''+RTRIM(@dateend)+''''注意留空格(对SQL语句而言)和去空格(对某些字符串变量)。
      

  2.   

    'select * from 自产库全集
    where  ' + @columnname +  'like '%'+ @key + '%' 'and  出版日期 between ''+@datefirst+' 
    ' and  ''+@dateend+'''
      

  3.   

    ltrim是去掉左边的空格
    rtrim是去掉右边的空格
    trim是去掉左边和右边的空格
    那请问什么是去掉中间的空格啊?望答!!