select查询值类型问题

y8932809 2012-10-20 12:08:04
存储过程是
ALTER proc [dbo].[DisciplineInfo1] @zx varchar(6),@fild varchar(20)=null,@valu varchar(40)=null
as
if @zx='selid'
exec('select * from DisciplineInfo where '+@fild+ '=' +@valu)
调用的时候
execute DisciplineInfo1 "selid","DisciplineName","农学"
显示列名无效,如果把"农学"换成"3" 查询值为3的时候则显示
在将 varchar 值 '农学' 转换成数据类型 int 时失败。
我的 DisciplineName 是varchar(40) 类型的,如果把农学的值改成数字,则都正常显示,为什么在查询的时候非得转换成int型呢?
...全文
85 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
y8932809 2012-11-09
  • 打赏
  • 举报
回复
引用 1 楼 tanleittl 的回复:
SQL code 123 exec('select * from DisciplineInfo where '+@fild+ '=''' +@valu+'''')
问题解决了,但是还是不明白这些单引号的意义,能稍微解释一下吗?
DBA_磊仔 2012-10-20
  • 打赏
  • 举报
回复

exec('select * from DisciplineInfo where '+@fild+ '=''' +@valu+'''')

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧