如何在不使用参数的情况下从结果集中获取逗号分隔的结果。

9 浏览
0 Comments

如何在不使用参数的情况下从结果集中获取逗号分隔的结果。

如何从以下示例中获取一个没有参数的逗号分隔的结果,并且只需要一个查询:

select FirstName + ' ' + LastName from table_of_Names where NameType='game show host'
Bob Barker, Willie Aammes, Steve Allen, Clive Anderson

谢谢。

0
0 Comments

如何在不使用参数的情况下从结果集中获取逗号分隔的结果?

有很多不同的方法可以实现这个目标,而在SQL中循环通常并不是一个好主意。最简单的方法是编写一个存储过程,通过迭代结果集并在除最后一行外的所有行末尾添加逗号和空格。

为什么要这么做?简单的研究就会发现有更好的方法,并且这个问题每天都被问到多次。

下面是一种可能的解决方法:

DECLARE @Result VARCHAR(MAX) = ''
SELECT @Result = @Result + ColumnName + ', '
FROM TableName
SET @Result = LEFT(@Result, LEN(@Result) - 1)
SELECT @Result

这个解决方法使用一个变量来保存逗号分隔的结果。首先,我们将变量初始化为空字符串。然后,我们通过迭代结果集的每一行,并将每个列的值与逗号和空格组合起来,添加到变量中。最后,我们使用LEFT函数将最后一个逗号和空格去除掉,并返回结果。

请注意,这只是一种可能的解决方案,具体的实现方式可能会根据具体的情况而有所不同。但是,通过使用这种方法,我们可以在不使用参数的情况下从结果集中获取逗号分隔的结果。

0
0 Comments

在没有使用参数的情况下,如何从结果集中获取逗号分隔的结果?

问题的原因是作者想要在不使用声明变量或参数的情况下,在单个查询中实现这个目标。

解决方法是使用STUFF函数将查询结果进行逗号分隔,并去除第一个逗号。

以下是使用参数的解决方法(性能更好):

DECLARE @result VARCHAR(max)
SELECT @result = COALESCE(@result + ', ', '') + FirstName + ' ' + LastName 
FROM table_of_Names WHERE NameType='game show host'
SELECT @result

以下是不使用参数的解决方法(性能较差):

SELECT STUFF((SELECT ','+ FirstName + ' ' + LastName
              FROM table_of_Names WHERE NameType='game show host'
              FOR XML PATH(''), TYPE).value('.', 'varchar(max)'), 1, 1, '') as NameList

作者对第一个解决方法进行了肯定的评价,认为它比包含STUFF函数的方法要快得多。但需要注意的是,无论哪种方法,实际执行计划都会给出更准确的性能评估。

总之,作者通过提出问题并给出两种解决方法,帮助读者实现了从结果集中获取逗号分隔的结果的需求。

0