请教在 sql server 查询分析器中调用参数的写法。

marklr 2013-02-22 01:45:42
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+'%' -- 加多一个参数之后,这个写法没有任何
数据显示,但也不报错

我最终的目的当然是两个参数都要用上,请教写法
...全文
262 8 点赞 打赏 收藏 举报
写回复
8 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
Zhang7613022 2013-02-22
exec('select * from table where '+@rangecn+' like ''%'+@se+'%''' )
  • 打赏
  • 举报
回复
Kilin_Zhang 2013-02-22
引用 楼主 marklr 的回复:
declare @range nvarchar(200) declare @se nvarchar(300) set @rangecn='compnyName' set @se='南海' select * from table where compnyName like '%'+@se+'%' -- 这个写法可以有数据显示出来 select ……
楼主意思是@rangecn参数代表列名,但是 select * from table where @rangecn like '%'+@se+'%' 没有查到数据,但也不报错,原因很简单,where后的条件永不成立。 翻译出来就是 select * from table where 'compnyName' like '%南海%',肯定不会有结果。 请使用动态sql,见2楼
  • 打赏
  • 举报
回复
nme4 2013-02-22
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)
  • 打赏
  • 举报
回复
發糞塗牆 2013-02-22
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'%南海%'
*/
  • 打赏
  • 举报
回复
發糞塗牆 2013-02-22
你这个要用动态sql,参见2楼
  • 打赏
  • 举报
回复
marklr 2013-02-22
引用 1 楼 DBA_Huangzj 的回复:
试试 select * from table where @rangecn like '%'+convert(nvarchar(300),@se)+'%'
这样也是无数据显示的
  • 打赏
  • 举报
回复
szm341 2013-02-22
exec('select * from table where '+@rangecn+' like ''%'+@se+'%''' )
  • 打赏
  • 举报
回复
發糞塗牆 2013-02-22
试试 select * from table where @rangecn like '%'+convert(nvarchar(300),@se)+'%'
  • 打赏
  • 举报
回复
相关推荐
发帖
MS-SQL Server
加入

3.3w+

社区成员

MS-SQL Server相关内容讨论专区
申请成为版主
帖子事件
创建了帖子
2013-02-22 01:45
社区公告
暂无公告