В Postgres:
select 'test' || null returns null
Я ожидал, что в противном случае он вернет "тест".
Это желаемое поведение? Кажется странным, что конкатенация строк с нулевым значением аннулирует всю строку...
Ссылаясь на pg docs: http://www.postgresql.org/docs/9.1/static/functions-string.html
"Примечание: перед PostgreSQL 8.3 эти функции будут молча принимать значения нескольких нестроковых типов данных из-за наличия неявных принуждений от этих типов данных к тексту. Эти принуждения были удалены, поскольку они часто вызывали неожиданное Однако оператор конкатенации строк (||) по-прежнему принимает нестроковый ввод, если хотя бы один вход имеет тип строки, как показано в таблице 9-6. В других случаях вставляйте явное принуждение к тексту если вам нужно дублировать предыдущее поведение."
Учитывая это, используя их пример функции concat string:
concat (str "any" [, str "any" [,...]]) text Конкатенация всех аргументов. Аргументы NULL игнорируются. concat ('abcde', 2, NULL, 22) → abcde222
Должен ли я просто привыкнуть к этому поведению с помощью '||' конкатенация или это что-то, что нужно исправить?