Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 将变量用作多个字符串的WHERE筛选器_Sql Server_Sql Server 2008_Tsql - Fatal编程技术网

Sql server 将变量用作多个字符串的WHERE筛选器

Sql server 将变量用作多个字符串的WHERE筛选器,sql-server,sql-server-2008,tsql,Sql Server,Sql Server 2008,Tsql,我有一个包含事件代码的字段,有时是两个,有时是3个 列如下所示: '3011, 6009' '3011, 3054' '3011, 3013' '6009, 9524' '3011, 9524' '3011, 6009, 3054' '3011, 6009, 9524' '3011, 9950' '6009, 9950' 这些组合定义了一个特定的组 我想使用变量@x并设置值。到目前为止,一切顺利 但我不确定如何

我有一个包含事件代码的字段,有时是两个,有时是3个

列如下所示:

'3011, 6009'      
'3011, 3054'      
'3011, 3013'      
'6009, 9524'      
'3011, 9524'      
'3011, 6009, 3054'
'3011, 6009, 9524'
'3011, 9950'      
'6009, 9950'      
这些组合定义了一个特定的组

我想使用变量@x并设置值。到目前为止,一切顺利

但我不确定如何在SELECT语句中使用该变量:

SELECT A, B, C
FROM TableA
WHERE EventCodes IN (@x)

谁能指出这句话的引号在哪里,我找不到。

中的
子句需要一组元素。一个变量,就像你的,是一个字符串,由你的元素串联而成,所以它们是非常不同的

您可以按如下方式创建临时表:

CREATE TABLE #app
(id varchar(10))
SELECT A, B, C
FROM TableA
WHERE EventCodes IN (SELECT id FROM #app)
插入#应用程序值('30116009'),依此类推

然后,您可以按如下方式重新编写查询:

CREATE TABLE #app
(id varchar(10))
SELECT A, B, C
FROM TableA
WHERE EventCodes IN (SELECT id FROM #app)


子句中的
需要一组元素。一个变量,就像你的,是一个字符串,由你的元素串联而成,所以它们是非常不同的

您可以按如下方式创建临时表:

CREATE TABLE #app
(id varchar(10))
SELECT A, B, C
FROM TableA
WHERE EventCodes IN (SELECT id FROM #app)
插入#应用程序值('30116009'),依此类推

然后,您可以按如下方式重新编写查询:

CREATE TABLE #app
(id varchar(10))
SELECT A, B, C
FROM TableA
WHERE EventCodes IN (SELECT id FROM #app)


如果您在2016年,您可以使用新功能。它将使用逗号分隔的字符串并返回一个表,您可以在
子句中使用该表。比如说,

SELECT A, B, C
FROM   TableA
WHERE  EventCodes IN STRING_SPLIT(@X, ',')

不过,如果您可以规范化您的表,那就更好了。

如果您在2016年,您可以使用新函数。它将使用逗号分隔的字符串并返回一个表,您可以在子句中使用该表。比如说,

SELECT A, B, C
FROM   TableA
WHERE  EventCodes IN STRING_SPLIT(@X, ',')

不过,如果您可以规范化您的表,那就更好了。

变量@x中的值是什么?它将是单个数字还是多个逗号分隔的值?变量@x中的值是什么?它是一个数字还是多个逗号分隔的值?这不完全是我所需要的,但你指引了我正确的方向。谢谢。这不完全是我所需要的,但你指引了我正确的方向。谢谢。我们在2008年,但是谢谢。至于正常化,有你在,但这次不是在我手中。我们在2008年,但谢谢。至于正常化,你在那里,但在这种情况下不是在我手中。