如何将任意字符串列表转换为SQL行集?

时间:2010-04-12 15:21:03

标签: sql sql-server tsql

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

更清楚一点,如果我SELECT 'foo', 'bar', 'baz'我将'foo','bar'和'baz'作为一行中的字段。我想把它们中的每一个看作一个单独的行。

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

4 个答案:

答案 0 :(得分:5)

嗯,作为'技术',有

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

ALL将涵盖您的某些字符串相同的情况 - UNION没有ALL将删除重复字符串);但是如果不了解你的情况,很难说这是否是你需要的......

答案 1 :(得分:3)

我可能会忽略这一点......但是;

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

答案 2 :(得分:1)

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

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

这可能不是最好的例子,但应该有助于你开始。

答案 3 :(得分:1)

更可重用的解决方案是创建一个表值函数,如文档here.

所示