В SQL Server:
SELECT @var = @var + col
FROM TABLE
на самом деле объединяет значения. Это режим причуд (и в настоящее время я не могу найти ссылку на документацию функции, которая уже много лет используется в сообществе SQL Server). Если @var имеет значение NULL в начале (то есть неинициализированное значение), то вам нужен COALESCE или ISNULL (и вы часто будете использовать разделитель):
SELECT @var = ISNULL(@var, '') + col + '|'
FROM TABLE
или это сделать список, разделенный запятыми, а затем удалить только начальную запятую:
SELECT @var = ISNULL(@var, '') + ',' + col
FROM TABLE
SET @var = STUFF(@var, 1, 1, '')
или (любезно предоставлено KM , полагаясь на NULL + ',' получая NULL, чтобы исключить необходимость в STUFF для первого элемента в списке):
SELECT @var = ISNULL(@var + ',', '') + col
FROM TABLE
или это сделать список с начальной, разделенной и завершающей запятой:
SELECT @var = ISNULL(@var, ',') + col + ','
FROM TABLE