在 SQL Server 2019 (Beta) 中,此代码现在返回一个仅包含一个值的列表。如果兼容性设置回 2017 或更早,这将返回一个包含五个值的列表。如果您正在执行数学函数,也会出现相同的错误。例如,如果客户正在做类似老式滚动总报告的事情,该报告也使用用户定义的函数,他们可能会被这个咬住。
如果这确实是预期的功能,肯定需要记录下来,因为它会破坏相当多的现有代码。
CREATE FUNCTION [dbo].[SomeStringFunction]
(@value NVARCHAR(MAX))
RETURNS NVARCHAR(MAX)
AS
BEGIN
RETURN CONVERT(NVARCHAR(MAX), ISNULL(@value, ''));
END
GO
DECLARE @str VARCHAR(1000)
SELECT TOP(5) @str = dbo.SomeStringFunction(@str) + ',' + name
FROM sys.columns
SELECT @str
我希望这在所有版本的 SQL Server 中都返回相同的结果。