sql >> Databáze >  >> RDS >> PostgreSQL

Oprava:„operátor neexistuje:celé číslo || celé číslo“ v PostgreSQL

Pokud dostanete „operátor neexistuje:integer || integer“ v PostgreSQL, je to pravděpodobně proto, že se pokoušíte zřetězit dvě čísla.

Pokud opravdu chcete zřetězit dvě čísla, nejsnazší způsob, jak tento problém vyřešit, je přetypovat alespoň jedno z nich na datový typ typu string.

Dalším způsobem, jak to udělat, je použít CONCAT() funkce.

Příklad chyby

Zde je příklad kódu, který tuto chybu způsobuje:

SELECT 123 || 456;

Výsledek:

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.

Řešení 1

Zde je rychlý způsob, jak tento problém vyřešit:

SELECT CAST(123 AS varchar(3)) || 456;

Výsledek:

123456

I když je pravda, že jsme mohli přenést obě čísla do řetězce, není to nutné. Dokud je jedním z operandů řetězec, operátor zřetězení potrubí je bude moci zřetězit.

Řešení 2

Dalším způsobem, jak to udělat, je použít CONCAT() funkce pro provedení zřetězení:

SELECT CONCAT(123, 456);

Výsledek:

123456

Tato funkce pracuje s čísly, aniž by bylo nutné některé z nich převádět na řetězec. Funkce to provede automaticky (ve výchozím nastavení zřetězí textové reprezentace svých argumentů).


  1. Vytvořte tabulku pouze v případě, že v MariaDB neexistuje

  2. Kdy použít STRAIGHT_JOIN s MySQL

  3. PLSQL Vložit do s poddotazem a návratovou klauzulí

  4. Přehled streamovací replikace pro TimescaleDB