当前位置: 首页 > 面试题库 >

在MSSQL中使用动态IN子句

燕正德
2023-03-14
问题内容

为什么以下SQL不能给我任何东西

DECLARE @Status AS VARCHAR(400)
SET @status = '''Closed'',''OPEN'''
select * from MYTABLE where status in(@status)

虽然 select * from MYTABLE where status in('Closed','Open')吸引我的行


问题答案:

您可以根据需要执行一些动态SQL,但我认为这并不是真正的竞争。

  DECLARE   @Status nVARCHAR(400),
            @SQL nvarchar(500)

SET @status = '''Closed'''+','+'''OPEN'''
set @SQL = '
select * from [MYTABLE] where status in('+@status +')'

 exec sp_executesql @SQL
GO


 类似资料:
  • 在PL/SQL中,可以使用连接指定In运算符的值: 是否可以使用变量执行相同的操作? 如果是这样,如何? 编辑:参考Marcin的回答,我如何从结果表中选择? 我得到以下错误:

  • 问题内容: 我正在使用iBATIS创建选择语句。现在,我想用iBATIS实现以下SQL语句: 使用以下方法,语句准备不正确,并且没有结果返回: iBATIS似乎重新构建了该列表,并尝试将其解释为字符串。 如何正确使用IN子句? 问题答案: 这是一篇博客文章,回答您的问题: iBatis:使用SQL IN关键字支持数组或列表参数 在Java中,您应该传入java.util.List。例如

  • 问题内容: 这是我第一次使用JDBCTemplates,并且遇到了需要使用如下查询的情况: 我怎么做?我已经尝试过传递列表/数组值,但是没有成功,我遇到了异常。我当前的代码如下所示: Spring文档指出,除了生成所需数量的“?”之外,没有其他方法可以这样做。占位符以匹配参数List的大小。有解决方法吗? 问题答案: 我认为您不能将其作为单个“?”来完成。与Spring JDBC模板无关,它是核心

  • 如何使用hibernateTemplate执行批量更新操作。下面的代码抛出 原因:org。冬眠QueryParameterException:位置超出已声明序数参数的数量。请记住,序数参数是基于1的!职位:2 如何通过将用户列表作为参数传递来实现此批量更新操作???

  • 问题内容: 我们正在尝试为本地sql查询动态生成IN子句以返回JPA实体。Hibernate是我们的JPA提供程序。我们的代码看起来像这样。 这是行不通的,in子句无法识别通过这种方式传入的任何值。有谁知道解决这个问题的方法吗? 问题答案: 在您的情况下,JPA支持命名列表参数:

  • 问题内容: 今天,我发布了这样一个查询的答案 另一个用户已将答案发布到这样的查询中 如您所见,column_name和值的位置互换了。 从Mysql Docs expr IN(值,…) 如果expr等于IN列表中的任何值,则返回1;否则返回0。如果所有值都是常量,则根据expr的类型对它们进行求值并进行排序。然后使用二进制搜索完成对项目的搜索。这意味着如果IN值列表完全由常量组成,则IN非常快。