Jeśli otrzymasz „operator nie istnieje:integer || integer” w PostgreSQL, prawdopodobnie dlatego, że próbujesz połączyć dwie liczby.
Jeśli naprawdę chcesz połączyć dwie liczby, najłatwiejszym sposobem rozwiązania tego problemu jest rzutowanie przynajmniej jednej z nich na typ danych typu string.
Innym sposobem na to jest użycie CONCAT()
funkcja.
Przykład błędu
Oto przykład kodu, który powoduje ten błąd:
SELECT 123 || 456;
Wynik:
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.
Rozwiązanie 1
Oto szybki sposób rozwiązania tego problemu:
SELECT CAST(123 AS varchar(3)) || 456;
Wynik:
123456
Chociaż prawdą jest, że mogliśmy rzucić obie liczby na ciąg, nie jest to konieczne. Dopóki jeden z operandów jest łańcuchem, operator konkatenacji potoku będzie mógł je łączyć.
Rozwiązanie 2
Innym sposobem na to jest użycie CONCAT()
funkcja do wykonania konkatenacji:
SELECT CONCAT(123, 456);
Wynik:
123456
Ta funkcja działa na liczbach bez konieczności konwertowania którejkolwiek z nich na ciąg. Funkcja robi to automatycznie (domyślnie łączy reprezentacje tekstowe swoich argumentów).