我有一个通常返回一个值的函数。但是,当它可以返回多行时,它会返回所有值的逗号分隔字符串。我是使用函数的新手,所以我想知道它是如何做到的?它是循环的吗?SELECT 语句不是只运行一次吗?这是我的代码:
CREATE FUNCTION dbo.list_of_cities (@fruit VARCHAR(10))
RETURNS VARCHAR(1000)
AS
BEGIN
DECLARE @output VARCHAR(1000)
SELECT @output = ISNULL(@output + ', ', '') + stores_table.city
FROM fruits_table INNER JOIN stores_table
ON fruits_table.store = stores_table.store
WHERE fruit = @fruit
RETURN @output
END
基本上我希望这个函数返回一个出售水果的所有城市的列表。fruits_table 有两列:水果和商店。stores_table 有两列:store 和 city。大多数情况下,这只会返回一个城市,但有时一种水果会在多个商店出售,这意味着这将返回多行。这个函数究竟如何将行连接成逗号分隔的字符串?该功能工作正常,但我只是好奇它为什么/如何这样做。