Casting a PostgreSQL-ben

Adattípusok Casting a Postgresql-ben

Az adatkonverzió minden programozási paradigmában gyakori, különösen az adatbázisok tranzakcióinak kezelése során. Más adatbázisokhoz hasonlóan a postgresql adatbázis is biztosítja a CAST műveleteket, amelyek lehetővé teszik az egyik adattípus átalakítását egy másikba. A postgresql-ben különböző cast műveletek vannak a string egész számokká való átalakítására, a Boolean-ba való átváltásra, a string dátumba való átváltására és fordítva. Ez a cikk példákkal illusztrálja a CAST operátor funkcióit a postgresql-ben. Ennek az operátornak a használata során a következő szintaxist használjuk:

1
CAST (expression AS target_type );

mivel a kifejezés lehet egy konstans, egy táblázat oszlop vagy egy kifejezés, amely egy adott értékre értékelődik. A target_type az a cél adattípus, amelyet a kifejezésünk az átalakítás után eredményez.A casting egy másik változata a postgresql-ben a :: operátor használatát jelenti. A szintaxis ebben az esetben a következő:

1
Kifejezés :: type

Lássunk most néhány példát a CAST operátor használatával.

Stringből egész számba való átkonvertálás

A string egész számba való konvertálásakor a következő kifejezést használjuk

1
2
SELECT
CAST (‘500’ AS INTEGER);

Ez az illusztráció az “500” típusú sztringet és az 500 típusú egész számot kasztolja. Az egyik legfontosabb dolog, amit nem szabad elfelejteni, hogy a sikeres konverzió akkor következik be, ha a cél adattípus kompatibilis a kifejezéssel. A fenti példát használva a postgresql típuskonverziós hibán keresztül típuskonverziós hibát okozna, ha az “500” kifejezést “a500”-ra cserélnénk, mivel ezek nem kompatibilisek.

Postgres cast to Boolean

A kifejezések Boolean-ra történő átvétele logikai adattípusokká alakítja őket. Az alábbi példában a CAST ( ) függvényt használjuk a string, char és integer kifejezések Boolean adattípusokká történő átkonvertálására.

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 to date

A pontos dátumot egy adott időbélyegből a Cast :: operátort használjuk az időbélyeggel bemenetként, és hozzáadjuk a ::date utótagot:

A szintaxis a következő:

1
SELECT kifejezés ::TIMESTAMP::DATE;

Vegyünk egy példát, amikor ‘2019-07-13 1:20:50′-től ‘2019-07-13’-ig szeretnénk kivenni a Cast lekérdezésünk a következő lenne:

1
SELECT ‘2019-07-13 1:20:50’::TIMESTAMP::DATE;

Postgresql cast double precision to numeric.

A kétszeres pontosságú kifejezés több tizedesjegyet vesz fel a float adattípusokhoz képest. A processzormemória esetében a kettős pontosságú típusok akár 64 bites memóriát is elfoglalhatnak. Kettős pontosságúból való konvertáláskor ez nagyon hasonló a kifejezés kerekítéséhez. A castingot azonban akkor használjuk, ha a kifejezésből pontos eredményt szeretnénk kapni. Az alábbi példában az :: cast operátort a Select utasítással együtt használjuk az átalakítás szemléltetésére.

Szintaktika : SELECT (Double precision :: numeric);SELECT (33.135941093 :: numeric);

Egy másik lehetőség a cast () függvény használata az alábbiak szerint:

Szintaktika :

SELECT CAST (Double precision AS numeric)

1
2
SELECT
CAST ( 33.135941093 AS numeric)

Postgresql Cast string to a date

A következő példa a string castingot dátumra szemlélteti a sql parancs SELECT használatával:

1
2
3
SELECT
CAST (‘2019-07-14’ MINT DÁTUM),
CAST (’13-JULY-2019′ MINT DÁTUM);

A példában először a ‘2019-07-14′ karakterláncot alakítjuk át 2019. július 14-re, míg a második részben a ’13-JÚLIUS-2019’ karakterláncot 2019. július 13-ra.

Következtetés

Megmutattuk a casting több technikáját számos példával együtt. Reméljük, hogy valamelyik példát hasznosnak találta, és képes lesz alkalmazni a tanultakat a saját konkrét alkalmazásában.

Ha segítségre van szüksége PostgreSQL-adatbázisának beállításához vagy kezeléséhez, kérjük, ne habozzon, forduljon hozzánk az Object Rockethez, hogy megbeszéljük projektjének részleteit, és megállapítsuk, tudunk-e segíteni.

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé.