Search code examples
sqlsql-serverstringaggregatestring-aggregation

STRING_AGG aggregation result exceeded the limit of 8000 bytes error


I need to combine texts by group. I found a function called STRING_AGG.

select c.id
, c.bereichsname
, STRING_AGG(j.oberbereich,',') oberBereiches 
from stellenangebote_archiv as j
join bereiche as c on j.bereich_id = c.id
group by c.id, c.bereichsname

But I am getting the following error:

STRING_AGG aggregation result exceeded the limit of 8000 bytes. Use LOB types to avoid result truncation.


Solution

  • Try as below

    select c.id
    , c.bereichsname
    , STRING_AGG( CAST(j.oberbereich as nvarchar(MAX)),',') oberBereiches 
    from stellenangebote_archiv j
    join bereiche c on j.bereich_id = c.id
    group by c.id, c.bereichsname
    

    So the problem is the length of the concatenated string is exceeding the character limit of the result column.

    So we are setting the limit to max by converting all values to "nvarchar(max)" to solve the problem.

    And "STRING_AGG()" function returns what it gets.