PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Poprawka:„operator nie istnieje:liczba całkowita || liczba całkowita” w PostgreSQL

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).


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Różne typy stref czasowych w obiekcie DateTime

  2. Zmienne zdefiniowane przez użytkownika w PostgreSQL

  3. Postgres i indeksy dotyczące kluczy obcych i kluczy podstawowych

  4. Najszybsze sprawdzenie, czy wiersz istnieje w PostgreSQL

  5. Jak timeofday() działa w PostgreSQL