我有一个简单的字符串列表,可能是任意长度的。我希望能够使用这个字符串列表,因为我会使用行集。有问题的应用程序正在针对SQL Server运行。
更清楚一点,如果我SELECT 'foo', 'bar', 'baz'
我将'foo','bar'和'baz'作为一行中的字段。我想把它们中的每一个看作一个单独的行。
是否存在我缺少的SQL(或SQLServer特定的)函数或技术,或者我将不得不求助于使用外部脚本语言编写函数?
答案 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.
所示