Hogyan konvertálhatunk Clobból Varchar2-be az Oracle-ben

Az adatok karakterlánc-formátumú konvertálása a különböző adattípusok között általában egyszerű folyamat az Oracle-ben, de egyes esetek kicsit nagyobb kihívást jelentenek, mint mások. Ezek egyike akkor fordul elő, amikor az Oracle segítségével a clob-ot varchar2-vé alakítja, ami nehéz, mert a A varchar2 oszlop maximum 4000 karakterből áll, míg a clob hatalmas mennyiségű karaktert képes tárolni adat. Célját azonban továbbra is elérheti a dbms_lob substr metódus vagy a to_char használatával, és megadhatja a maximális méretet.

A CLOB és a VARCHAR2 magyarázata

A CLOB (vagy köznyelvben "clob") a "karakteres nagy objektum" rövidítése, és akár 4 GB adat tárolására is képes. Számos adatbázisrendszer használja, köztük a DB2 és az Oracle. A CLOB akkor hasznos, ha nagy mennyiségű adatot kell tárolnia, de maga a méret bizonyos helyzetekben problémákat okozhat. Ez az oka annak, hogy az Oracle CLOB-ról egy kezelhetőbb méretű karakterlánc-formátumra való átalakítás gyakran jó módszer a műveletek végrehajtása előtt.

A nap videója

A VARCHAR2 formátum kisebb mennyiségű adatot tárol, általában legfeljebb 4000 bájtot, hacsak nem használ kiterjesztett maximális karakterláncméretet, amely esetben akár 32 767 bájtot is elérhet. Egybájtos karakterkészlet esetén általában legfeljebb 4000 karaktert kaphat egy oszlopban. A két adatformátum maximális mérete közötti eltérés az átalakítás során felmerülő problémák.

A dbms_lob substr módszer

A clob karakterlánc varchar2-vé alakításához nyissa meg az SQL *Plus programot. A végrehajtandó konverzió szintaxisa a következő:

SELECT dbms_lob.substr( clob_column, for_how_ny_byte, from_which_byte ) FROM tábla

Itt a zárójelben lévő értékek azok, amelyeket módosítani kell, valamint a "táblázat" a végén. Ezek megfelelnek az oszlopnak ("clob_column") és a táblázatnak, amellyel dolgozik. A "for_how_many_bytes" lehetőséget ad annak meghatározására, hogy hány bájtnyi adatot szeretne konvertálni, a "from_which_byte" pedig egy kiindulási pont megadását.

Tehát, ha van egy "adók" nevű táblája és egy "net_pay" nevű mezője, és feltéve, hogy 4000 bájtot szeretne az elsőtől kezdve, akkor írja be:

SELECT dbms_lob.substr (net_pay, 4000, 1) FROM adók

A karakterlánc varchar2 formátumba konvertálásához.

A TO_CHAR módszer

Használhatja a TO_CHAR parancsot is nagyon hasonló szintaxissal, hogy elérje ugyanazt a célt:

SELECT TO_CHAR(SUBSTR (clob_column, 0,3999)) FROM táblázatból

Itt a kezdő és a záró bájtok 0 és 3999 (egy 4000 karakteres kezdő karakterlánc esetén elejétől), de a "clob_column" és a "table" mezőket pontosan ugyanúgy használják, mint előtt. Tehát ugyanabban a példában beírhatja:

SELECT TO_CHAR(SUBSTR (nettó fizetés, 0,3999)) adókból

Alapvetően ahelyett, hogy egyetlen lépésben fejezné be a folyamatot, ez a SUBSTR paranccsal húz ki egy részkarakterláncot a nagyobb karakterláncból, majd a "to_char" segítségével kezeli az átalakítást. Ha a kérdéses clob oszlop 4000 bájtnál kevesebb információt tartalmaz, akkor a to_char után zárójelben megadhatja az oszlop nevét ahelyett, hogy megadna egy karakterláncot.