Подтвердить что ты не робот

Конкатенация Postgres

Я пытаюсь выполнить простой конкатенации в PostgreSQL, и он продолжает выдавать сообщение об ошибке. Я не понимаю, что я делаю неправильно здесь.

select concat('abcde', 'fgh');
No function matches the given name and argument types. You might need to add explicit type casts.

select concat(cast('abcde' as text), cast('fgh' as text));
No function matches the given name and argument types. You might need to add explicit type casts.

Я использую Postgres версии 8.4.11. Пожалуйста, дайте мне знать, что происходит.

4b9b3361

Ответ 1

Оператор concat ||, поэтому select 'abcde' || 'fgh' должен работать. Кроме того, как @jonathan.cone предложил проверить документы.

Ответ 2

concat был добавлен в 9.1, он не существует в 8.4. Как отмечали другие, используйте оператор ||.

Сравните 8.4 docs с 9.1 docs и вы заметите, что функция concat отсутствует в документах 8.4.

См. панель в верхней части документации, в которой говорится "Эта страница в других версиях"? Это очень удобно, когда вы работаете со старой версией, или если вы найдете ссылку на старую версию страницы через Google, и вы находитесь на более новой версии. Всегда убедитесь, что вы смотрите на документы для правильной версии.

Было бы неплохо, если бы таблицы для функций и т.д. включали "Первый появился в версии", но, к сожалению, этого не делают.

Если вы когда-либо путаетесь в доступности функции, вы можете использовать \df в psql для поиска и поиска функций.

Например, чтобы перечислить все функции с именем concat, используйте \df concat

Для всех функций схемы pg_catalog (встроенные функции) используйте \df pg_catalog. - обратите внимание на конечный период, говоря psql, что вы имеете в виду "любая функция в схеме pg_catalog", а не "функция с именем pg_catalog".

Для всех функций с именами, начинающимися с concat, используйте \df concat*

Это очень мощный инструмент. Этот же язык работает при поиске схемы (\dn), таблиц (\dt) и т.д.

Ответ 3

select 'abcde' || 'fgh';

select cast('abcde' as text) || cast('fgh' as text);

Ответ 4

Вы можете сделать это с помощью функции postgres:

select  concat('abcde', 'fgh');

Выход:

'abcdefgh'