Ако получите „операторът не съществува:цяло число || integer” грешка в PostgreSQL, вероятно е защото се опитвате да свържете две числа.
Ако наистина искате да свържете две числа, най-лесният начин да преодолеете този проблем е първо да прехвърлите поне едно от тях към низов тип данни.
Друг начин да го направите е да използвате CONCAT()
функция.
Пример за грешка
Ето пример за код, който причинява тази грешка:
SELECT 123 || 456;
Резултат:
ERROR: operator does not exist: integer || integer LINE 1: SELECT 123 || 456; ^ HINT: No operator matches the given name and argument types. You might need to add explicit type casts.
Решение 1
Ето един бърз начин за преодоляване на този проблем:
SELECT CAST(123 AS varchar(3)) || 456;
Резултат:
123456
Въпреки че е вярно, че бихме могли да прехвърлим и двете числа към низ, това не е необходимо. Докато един от операндите е низ, операторът за конкатенация ще може да ги конкатенира.
Решение 2
Друг начин да го направите е да използвате CONCAT()
функция за извършване на конкатенацията:
SELECT CONCAT(123, 456);
Резултат:
123456
Тази функция работи върху числа, без да е необходимо да преобразувате някое от тях в низ. Функцията прави това автоматично (по подразбиране обединява текстовите представяния на своите аргументи).