在SQL查询中使用fn_Split

时间:2014-06-13 18:36:43

标签: sql

我一直在努力让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的,所以请原谅我。谢谢!

1 个答案:

答案 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值的所有行。