declare @range nvarchar(200)
declare @se nvarchar(300)
 
set @rangecn='compnyName' 
set @se='南海' select * from table where  compnyName like '%'+@se+'%'   -- 这个写法可以有数据显示出来
select * from table where  @rangecn like '%'+@se+'%'   -- 加多一个参数之后,这个写法没有任何
数据显示,但也不报错我最终的目的当然是两个参数都要用上,请教写法

解决方案 »

  1.   

    试试
    select * from table where  @rangecn like '%'+convert(nvarchar(300),@se)+'%'   
      

  2.   

    exec('select * from table where  '+@rangecn+' like ''%'+@se+'%''' )
      

  3.   

    declare @rangecn nvarchar(200)
    declare @se nvarchar(300)
     
    set @rangecn='compnyName' 
    set @se='南海' 
    print('select * from table where  '+@rangecn+' like N''%'+@se+'%''' ) /*
    select * from table where  compnyName like N'%南海%'
    */
      

  4.   

    declare @range nvarchar(200)
    declare @se nvarchar(300)
    declare @tsql nvarchar(300) 
    set @range='compnyName' 
    set @se='南海' --select * from table where  compnyName like '%'+@se+'%'   -- 这个写法可以有数据显示出来
    set @tsql='select * from table where  @rangecn like ''%'+@se+'%'''
    --print @tsql exec (@tsql)
      

  5.   


    楼主意思是@rangecn参数代表列名,但是 select * from table where  @rangecn like '%'+@se+'%' 没有查到数据,但也不报错,原因很简单,where后的条件永不成立。
    翻译出来就是  select * from table where  'compnyName' like '%南海%',肯定不会有结果。请使用动态sql,见2楼
      

  6.   

    exec('select * from table where  '+@rangecn+' like ''%'+@se+'%''' )