Kasting datových typů v Postgresql
Konverze dat je běžná ve všech programovacích paradigmatech, zejména při zpracování transakcí v databázích. Stejně jako v jiných databázích i v databázi postgresql existují operace CAST, které umožňují převod jednoho datového typu na jiný. V postgresql existují různé operace cast pro převod řetězce na celá čísla, casting na boolean, casting řetězce na datum a naopak. Tento článek na příkladech ilustruje funkce operátoru CAST v postgresql. Při použití tohoto operátoru se používá následující syntaxe:
1
|
CAST (výraz AS cílový_typ );
|
přičemž výrazem může být buď konstanta, sloupec tabulky, nebo výraz, který se vyhodnotí na konkrétní hodnotu. Cílový_typ je cílový datový typ, na který náš výraz po konverzi vyústí. další verze castingu v postgresql zahrnuje použití operátoru ::
. Syntaxe je v tomto případě následující:
1
|
Výraz :: typ
|
Uveďme si nyní několik příkladů použití operátoru CAST.
Převod řetězce na celé číslo Casting
Při převodu řetězce na celé číslo použijeme následující výraz
1
2 |
SELECT
CAST (‚500‘ AS INTEGER); |
Tento obrázek provede cast řetězce typu „500“ na a celé číslo typu 500. Jednou z klíčových věcí, kterou je třeba si zapamatovat, je, že k úspěšnému převodu dojde, pokud je cílový datový typ kompatibilní s výrazem. Na základě výše uvedeného příkladu by postgresql přes chybu typové konverze, když výraz „500“ nahradíme výrazem „a500“, protože nejsou kompatibilní.
Postgres cast to Boolean
Konverze výrazů na Boolean je převede na logické datové typy. Níže je uveden příklad, který používá funkci CAST ( ) pro castování řetězcových, znakových a celočíselných výrazů na logické datové typy.
1
2 3 4 5 6 7 |
SELECT
CAST(‚1‘ as BOOLEAN), CAST(‚0‘ as BOOLEAN); CAST(‚true‘ AS BOOLEAN), CAST(‚false‘ as BOOLEAN), CAST(‚T‘ as BOOLEAN), CAST(‚F‘ as BOOLEAN); |
Postgresql cast timestamp na datum
Přesné datum získáme z konkrétního timestampu pomocí Cast :: s časovým razítkem jako vstupem a přidáním přípony ::date:
Syntaxe je následující:
1
|
Vybrat výraz ::TIMESTAMP::DATE;
|
Příklad, když chcete získat z ‚2019-07-13 1:20:50‘ na ‚2019-07-13‘ Náš dotaz Cast by byl:
1
|
SELECT ‚2019-07-13 1:20:50‘::TIMESTAMP::DATE;
|
Postgresql cast double precision to numeric.
Výraz s dvojnásobnou přesností zabírá více desetinných míst ve srovnání s datovými typy float. V případě paměti procesoru mohou typy s dvojnásobnou přesností zabírat až 64 bitů paměti. Při převodu z dvojnásobné přesnosti je to dost podobné jako při zaokrouhlování výrazu. Odlévání se však používá v případě, že chceme z výrazu získat přesný výsledek. V následujícím příkladu použijeme pro ilustraci převodu operátor cast ::
spolu s příkazem Select.
Syntaxe : SELECT (Double precision :: numeric);SELECT (33.135941093 :: numeric);
Alternativním způsobem je použití funkce cast (), jak je uvedeno níže:
Syntaxe :
SELECT CAST (Double precision AS numeric)
1
2 |
SELECT
CAST ( 33.135941093 AS numeric) |
Postgresql Cast string to a date
Následující příklad ilustruje casting řetězce na datum pomocí sql příkazu SELECT:
1
2 3 |
SELECT
CAST (‚2019-07-14‘ AS DATE), CAST (’13-JULY-2019′ AS DATE); |
V příkladu nejprve převedeme řetězec ‚2019-07-14′ na 14. července 2019, zatímco v druhé části převedeme ’13-ČERVENCE-2019‘ na 13. července 2019.
Závěr
Ukázali jsme si několik technik lití spolu s několika příklady. Doufáme, že pro vás byl některý z těchto příkladů užitečný a že budete schopni aplikovat to, co jste se naučili, na vaši konkrétní aplikaci.
Pokud potřebujete pomoc s nastavením nebo správou databáze PostgreSQL, neváhejte nás kontaktovat ve společnosti Object Rocket, abychom s vámi probrali podrobnosti vašeho projektu a zjistili, zda vám můžeme pomoci.