我一直在努力让fn_Split
在我的查询中正常工作。我已经搜索过高低,在这里找到的答案似乎与我的需求相近,但我仍然无法使其正常工作。
基本上我试图返回与数组中的条目匹配的记录。我已经有一个表值函数与我的数据库一起使用,如下所示:
Select * From dbo.fn_Split('county1, county2',',')
我的问题是让它在我的应用程序中工作,我希望它能够返回具有相同精确县的记录,或者将所选择的县作为更大县的一部分(比如所有县)。县以下列格式存储在名为County的列中:county1,county2,county3等。我现在意识到这是问题的一部分,在一个列中有多个值是不好的形式,但我现在不能对此做任何事情。
所以,这是我到目前为止所得到的:
SELECT * FROM MyTable WHERE County IN (SELECT County From dbo.fn_Split(@counties, ','))
由于某种原因返回所有记录。 @counties
采用以下格式:
county1, county2
非常感谢任何帮助。如果我没有解释这个问题,我是新来写SQL的,所以请原谅我。谢谢!
答案 0 :(得分:3)
使用
SELECT *
FROM MyTable
WHERE County IN (SELECT value /*<-- Guessed column name*/
FROM dbo.fn_Split(@counties, ','))
County
不能是您从split函数实际返回的列的名称,因此它将从外部查询中解析。
即
SELECT *
FROM MyTable
WHERE County IN (SELECT County )
与
相同SELECT *
FROM MyTable
WHERE County = County
只要split函数返回至少一行,并且将始终返回外部查询中NULL
的非County
值的所有行。