【问题标题】:How to program the in clause in tsql query如何在sql查询中编写in子句
【发布时间】:2017-09-18 12:36:43
【问题描述】:

我有以下代码

declare @code nvarchar
set @code='2/2017,3/2017'

select *
from payroll
where id_code in (@code)

但我在 where 子句中遇到错误。

【问题讨论】:

  • 你想达到什么目的?你得到的错误是什么?
  • 设置@code = '''2/2017'',''3/2017'''
  • @TechGirl 这行不通。首先类型是nvarchar 不是列表,其次是单引号
  • 您可以使用表值参数而不是分隔字符串吗?如果不是,您需要使用动态 sql 或字符串拆分器。

标签: sql-server tsql


【解决方案1】:

如果您使用的是SQL Server 2016,您可以使用STRING_SPLIT

declare @code nvarchar
set @code='2/2017,3/2017'

select *
from payroll
where id_code in (SELECT value FROM STRING_SPLIT(@code,','))

对于旧版本的 SQL,您可以将其用作指南 T-SQL split string based on delimiter

【讨论】:

  • 其实我觉得最后一位应该是IN (SELECT value FROM STRING_SPLIT(@code, ','))
猜你喜欢
  • 2018-09-28
  • 1970-01-01
  • 2014-01-02
  • 2016-04-25
  • 2013-01-31
  • 1970-01-01
  • 2020-10-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多