Bevezetés

A PostgreSQL-ben tárolt adatokkal való munka során előfordulhat, hogy vannak olyan adatok, amelyeket más adattípusként szeretne kezelni. Például lehet, hogy van egy szöveges értéke, amely egy számot képvisel, például “53”. Ahhoz, hogy számításokat végezzen ezen az értéken, lehet, hogy több értelme van az értéket egész számmá konvertálni. A Postgres-ben az CAST függvényt arra használjuk, hogy egy érték adattípusát más adattípussá konvertáljuk. Az értéknek kompatibilisnek kell lennie a megcélzott adattípussal, ellenkező esetben hibaüzenet érkezik vissza. Ebben a PostgreSQL cikkben megmutatjuk, hogyan kell használni a PostgreSQL CAST függvényt, és áttekintünk néhány példát a különböző konverziókra.

Előfeltételek

A bemutató folytatása előtt két kulcsfontosságú előfeltételnek kell teljesülnie:

  • A PostgreSQL-nek telepítve és konfigurálva kell lennie a számítógépén.
  • Legyen némi alapismerete a PostgreSQL-ről.

PostgreSQL CAST függvény

A PostgreSQL-ben kétféleképpen lehet CAST egy értéket megadni. Az első módszernél a CAST függvény zárójelén belül adjuk meg az értéket és a megcélzott adattípust. A szintaxis az alábbiakban látható:

1
SELECT CAST ( VALUE AS TYPE )

A másik módja az érték castingolásának az érték és a célzott adattípus közötti :: jelölés használata. Az alábbi szintaxis látható:

1
SELECT VALUE::TYPE

Ebben a szintaxisban a value jelöli az értéket, amelyet castolni vagy az adattípust módosítani szeretnénk.A type azt az adattípust jelöli, amelyre ezt az értéket célozza; a type néhány lehetséges értéke a INTEGER, FLOAT és CHAR.

Postgres CAST példa

Nézzünk néhány példát a Postgres CAST függvény használatára.

Postgres CAST to String

Az első példánkban egy értéket sztring értékként fogunk castolni. A következő SELECT utasításban láthatjuk, hogyan történik ez:

1
2
3
4
5
SELECT CAST( 5137 AS TEXT );
text
——
5137
(1 ROW)

Postgres CAST to Integer

A következőkben egy szöveg típusú értéket konvertálunk egész számmá. A következő utasítás mutatja, hogyan történik ez:

1
2
3
4
5
SELECT CAST( ‘214’ AS INTEGER );
int4
——
214
(1 ROW)

Az alábbi példában egy egész értéket castolunk a MONEY adattípusba. Ennek működését a következő utasításban láthatjuk:

1
2
3
4
5
SELECT CAST(7419 AS MONEY);
pénz
———–
$7,419.00
(1 ROW)

Postgres CAST to Interval

A következő példánkban egy szöveges értéket fogunk a INTERVAL adattípusba castolni. A következő SELECT utasítás mutatja be, hogyan működik:

1
2
3
4
5
SELECT CAST (‘1 év 2 hónap 7 nap’ AS INTERVAL);
INTERVAL
———————-
1 ÉV 2 hónap 7 nap
(1 ROW)

Postgres CAST to Date

A CAST függvényt használhatjuk egy szöveges érték DATE adattípussá alakítására is, ahogy az alábbi példában látható:

1
2
3
4
5
SELECT CAST( ‘July 24, 1999’ AS DATE );
DATE
————
1999-07-24
(1 ROW)

Itt egy másik módja annak, hogy CAST szöveget adjunk meg dátumként:

1
2
3
4
5
SELECT CAST( ’24-07-99′ AS DATE );
DATE
————
1999-07-24
(1 ROW)

Postgres CAST With Trim

Az alábbi példában egy szöveges értéket vágunk le, majd a TRIM-ről visszakapott eredményt castoljuk:

1
2
3
4
5
SELECT CAST( TRIM( LEADING ‘DATE ‘ FROM ‘DATE January 28, 1998’ ) AS DATE);
ltrim
————
1998-01-28
(1 ROW)

Postgres CAST With Concatenation

Két vagy több karakterláncot a || operátorral tudunk összekapcsolni. Utolsó példánkban egy sztringértéket fogunk egy dátumértékkel egybekötni, amelyet TEXT-ra castolunk. Az alábbi utasítás mutatja, hogy ez hogyan történik:

1
2
3
4
5
SELECT ‘The current date is ‘ || CAST( CURRENT_DATE AS TEXT );
?COLUMN?
——————————–
The CURRENT DATE IS 2020-03-28
(1 ROW)

Következtetés

Az adatok lekérdezésekor a PostgreSQL-ben előfordulhat, hogy bizonyos oszlopok értékeit más adattípusra szeretnénk konvertálni. Az adattípus megváltoztatása megkönnyítheti a számítások és feldolgozási műveletek elvégzését a visszaküldött adatokon. Ebben a cikkben bemutattuk, hogyan használhatja a Postgres CAST függvényét egy érték adattípusának átalakítására. Ha a cikkben bemutatott összes példát végigkövette, akkor a CAST függvényt hatékonyan tudja majd használni a saját PostgreSQL lekérdezéseiben.

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

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