2010-04-12 74 views
1

我有一个简单的字符串列表,它可以是任意长度的。我希望能够使用这个字符串列表,因为我会使用行集。有问题的应用程序针对SQL Server运行。如何将任意字符串列表转换为SQL行集?

为了更清楚,如果我做SELECT 'foo', 'bar', 'baz'我在单行中获得'foo','bar'和'baz'作为字段。我希望将它们中的每一个看作是一个单独的行。

是否存在我缺少的SQL(或特定于SQLServer)函数或技术,或者我将不得不求助于使用外部脚本语言编写函数?

回答

3

我可能会错过这一点....但;

SELECT 'foo' 
UNION 
SELECT 'bar' 
UNION 
SELECT 'baz' 
+0

这是我所需要的 - 谢谢! – 2010-04-12 15:41:44

5

那么,作为一个“技术”有

SELECT 'foo' 
UNION ALL 
SELECT 'bar' 
UNION ALL 
SELECT 'baz' 

(在ALL s为以覆盖你的一些字符串都相同的情况下 - UNION没有ALL将删除重复);但不知道更多关于你的情况,很难说这是否是你需要的...

+0

用于包装语义的+1! – 2010-04-12 15:26:35

1

如果它将是一个任意长度,你可以使用一个PIVOT。我以前只做了几次,但它会做你所问的。

http://msdn.microsoft.com/en-us/library/ms177410.aspx

这也许不是最好的例子,但应该可以帮助你开始。

+0

我认为UNPIVOT实际上可以更好地为此工作,但这些示例显示它并不完全符合我的要求。不过谢谢,这可能是我需要的东西。 – 2010-04-12 15:41:27

1

更可重复使用的解决方案是创建一个表值函数,如记录here.