首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

TSQL字符串连接在WHILE循环中不起作用?

在T-SQL中,字符串连接可以使用+操作符进行连接。在WHILE循环中,如果需要将字符串连接起来,可以使用一个变量来存储当前的连接结果,并在每次循环中将新的字符串连接到该变量上。

例如,假设有一个表myTable包含两个字段idname,我们想要将所有的name字段连接起来,以逗号分隔。可以使用以下的T-SQL代码:

代码语言:sql
复制
DECLARE @result NVARCHAR(MAX) = '';
DECLARE @separator NVARCHAR(10) = '';

DECLARE @id INT;
DECLARE @name NVARCHAR(50);

DECLARE cursor_myTable CURSOR FOR SELECT id, name FROM myTable;

OPEN cursor_myTable;

FETCH NEXT FROM cursor_myTable INTO @id, @name;

WHILE @@FETCH_STATUS = 0
BEGIN
    SET @result = @result + @separator + @name;
    SET @separator = ', ';

    FETCH NEXT FROM cursor_myTable INTO @id, @name;
END;

CLOSE cursor_myTable;
DEALLOCATE cursor_myTable;

SELECT @result AS names;

在上面的代码中,我们使用了一个@result变量来存储当前的连接结果,以及一个@separator变量来存储分隔符。在WHILE循环中,我们将新的@name字符串连接到@result变量上,并将@separator设置为逗号和空格,以便下一次循环使用。

需要注意的是,如果表中的数据量非常大,使用CURSOR可能会导致性能问题。在实际应用中,应该尽量避免使用CURSOR,而是使用集合操作来进行字符串连接。例如,可以使用以下的代码来实现相同的功能:

代码语言:sql
复制
SELECT STRING_AGG(name, ', ') AS names FROM myTable;

在上面的代码中,我们使用了STRING_AGG函数来将所有的name字段连接起来,以逗号和空格为分隔符。这种方式的性能要比使用CURSOR高得多,并且代码也更简洁。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

领券