我有一个包含事件代码的字段,有时是两个,有时是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)
任何人都可以指出引号在哪里,我找不到它。
答案 0 :(得分:0)
IN
子句需要一组元素。作为您的变量是一个带有元素串联的字符串,因此非常不同。
您可以按如下方式创建临时表:
CREATE TABLE #app
(id varchar(10))
INSERT INTO #app VALUES('3011,6009'),依此类推
然后,您可以重新编写查询,如下所示:
SELECT A, B, C
FROM TableA
WHERE EventCodes IN (SELECT id FROM #app)
或
SELECT A, B, C
FROM TableA
JOIN #app
ON TableA.EventCode = #app.id
答案 1 :(得分:0)
如果您在2016年,则可以使用新的STRING_SPLIT功能。它将以逗号分隔的字符串并返回一个表,您可以在IN
子句中使用该表。例如,
SELECT A, B, C
FROM TableA
WHERE EventCodes IN STRING_SPLIT(@X, ',')
如果你可以规范化你的桌子会更好。