sp_executesql中where从句支不支持使用in语法?

icemanpro 2009-06-16 11:49:30
想将下列Sql语句改写成使用sp_executesql执行,

select a.* from a where a.field in ('S0001','1')


改用sp_executesql后的语句。

exec sp_executesql N' select a.* from a
where a.field in (@cardno) ',N'@cardno nvarchar(150)',@cardno=N' ''S0001'',''1'''


但运行时,sp_executesql的并没找到任何记录。这是怎么回事?哪里有问题?
...全文
151 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
sdhdy 2009-06-16
  • 打赏
  • 举报
回复
用IN貌似有点问题。
SQL77 2009-06-16
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 fredrickhu 的回复:]
引用 1 楼 SQL77 的回复:
CHARINDEX(A.FIELD,@cardno)>0
[/Quote]
现在恢复高亮了,呵呵

exec sp_executesql N' select a.* from a
where CHARINDEX(CONVERT(VARCHAR(8000), a.field),(@cardno)>0 ',N'@cardno nvarchar(150)',@cardno=N' ''S0001'',''1'''

这样应该更标准
sdhdy 2009-06-16
  • 打赏
  • 举报
回复
--try:
exec sp_executesql N' select a.* from a
where a.field in ('+@cardno+')',N'@cardno nvarchar(150)',@cardno=N' ''S0001'',''1'''
--小F-- 2009-06-16
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 SQL77 的回复:]
CHARINDEX(A.FIELD,@cardno)>0
[/Quote]
SQL77 2009-06-16
  • 打赏
  • 举报
回复
CHARINDEX(A.FIELD,@cardno)>0

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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