Hvordan konvertere fra Clob til Varchar2 i Oracle

click fraud protection

Konvertering av data i et strengformat mellom ulike datatyper er vanligvis en enkel prosess i Oracle, men noen tilfeller er litt mer utfordrende enn andre. En av disse oppstår når du bruker Oracle til å konvertere clob til varchar2, noe som er vanskelig fordi en varchar2-kolonnen har maksimalt 4000 tegn, mens clob kan lagre enorme mengder tegn data. Du kan likevel oppnå målet ditt ved å bruke enten dbms_lob substr-metoden eller to_char og spesifisere en maksimal størrelse.

CLOB og VARCHAR2 Forklart

CLOB (eller "clob" i daglig tale) er et akronym for "karakter stort objekt", og det kan lagre opptil 4 GB data. Den brukes av flere databasesystemer, inkludert DB2 og Oracle. CLOB er nyttig når du trenger å lagre store mengder data, men selve størrelsen kan forårsake problemer i enkelte situasjoner. Dette er grunnen til at konvertering fra en Oracle CLOB til et strengformat av en mer håndterlig størrelse ofte er en god tilnærming før du utfører operasjoner.

Dagens video

VARCHAR2-formatet lagrer mindre mengder data, vanligvis opptil 4 000 byte, med mindre du bruker en utvidet maksimal strengstørrelse, i så fall kan den gå opp til 32 767 byte. For et enkeltbyte-tegnsett kan du vanligvis få opptil 4000 tegn i en kolonne. Avviket mellom de maksimale størrelsene på disse to dataformatene er der problemene oppstår under konvertering.

Metoden dbms_lob substr

For å konvertere en clob-streng til varchar2, åpne SQL *Plus-programmet. Syntaksen for konverteringen du må utføre er:

VELG dbms_lob.substr( clob_column, for_how_many_bytes, from_which_byte ) FRA tabellen

Her er verdiene i parentes de du må endre, samt "tabell" på slutten. Disse tilsvarer kolonnen ("clob_column") og tabellen du jobber med. "for_how_many_bytes" gir deg muligheten til å spesifisere hvor mange byte med data du vil konvertere, og "from_which_byte" lar deg spesifisere et utgangspunkt.

Så hvis du har en tabell som heter "skatter" og et felt kalt "net_pay", og forutsatt at du vil ha 4000 byte fra den første, skriver du inn:

VELG dbms_lob.substr (net_pay, 4000, 1) FRA skatter

For å konvertere strengen til varchar2-format.

TO_CHAR-metoden

Du kan også bruke TO_CHAR-kommandoen med en veldig lik syntaks for å oppnå det samme målet:

SELECT TO_CHAR(SUBSTR (clob_column, 0,3999)) FRA tabell

Her er start- og sluttbytene spesifisert som 0 og 3999 (for en streng på 4000 tegn som starter fra begynnelsen), men feltene "clob_column" og "table" brukes på nøyaktig samme måte som før. Så i samme eksempel kan du skrive inn:

SELECT TO_CHAR(SUBSTR (net_pay, 0,3999)) FROM skatter

I utgangspunktet, i stedet for å fullføre prosessen i et enkelt trinn, bruker dette SUBSTR-kommandoen til å trekke en understreng fra den større strengen, og deretter bruker den "to_char" for å håndtere konverteringen. Hvis den aktuelle clob-kolonnen har færre enn 4000 byte med informasjon, kan du skrive inn navnet på kolonnen i parentes etter to_char i stedet for å spesifisere en understreng.