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