Разница между PostgreSQL CONCAT() и оператором || для конкатенации строк заключается в особенностях обработки нулевых значений. 13
Оператор || работает по стандарту SQL, когда любое выражение, в котором участвует NULL, должно равняться NULL. 2 Если один из аргументов оператора — NULL, то результат также будет NULL. 23
Функция CONCAT(), в отличие от оператора ||, игнорирует значения NULL в процессе объединения. 1 Если какой-то из элементов NULL, функция проигнорирует его и соединит остальное, но если все NULL — вернёт пустую строку. 2
Таким образом, CONCAT() предпочтительнее оператора || для задач, где важно избежать получения нулевых результатов в объединённой строке. 1