המרת נתונים בפורמט מחרוזת בין סוגי נתונים שונים היא בדרך כלל תהליך פשוט ב-Oracle, אבל מקרים מסוימים הם קצת יותר מאתגרים מאחרים. אחד מאלה מתרחש כאשר אתה משתמש ב-Oracle כדי להמיר clob ל-varchar2, וזה קשה כי א עמודה varchar2 מכילה מקסימום 4,000 תווים, בעוד ש-clob יכול לאחסן כמויות עצומות של תווים נתונים. עם זאת, אתה עדיין יכול להשיג את המטרה שלך, באמצעות שיטת dbms_lob substr או to_char וציון גודל מקסימלי.
CLOB ו-VARCHAR2 מוסברים
CLOB (או "קלוב" בשפה המדוברת) הוא ראשי תיבות של "אובייקט גדול אופי", והוא יכול לאחסן עד 4 GB של נתונים. הוא נמצא בשימוש על ידי מספר מערכות מסד נתונים, כולל DB2 ו-Oracle. CLOB שימושי כאשר אתה צריך לאחסן כמויות אדירות של נתונים, אבל הגודל עצמו יכול לגרום לבעיות במצבים מסוימים. זו הסיבה שהמרה מ-Oracle CLOB לפורמט מחרוזת בגודל ניתן לניהול היא לרוב גישה טובה לפני ביצוע פעולות.
סרטון היום
פורמט VARCHAR2 מאחסן כמויות קטנות יותר של נתונים, בדרך כלל עד 4,000 בתים, אלא אם אתה משתמש בגודל מחרוזת מקסימלית מורחב, ובמקרה זה הוא יכול להגיע עד 32,767 בתים. עבור ערכת תווים של בייט בודד, בדרך כלל תוכל לקבל עד 4,000 תווים בעמודה. הפער בין הגדלים המרביים של שני פורמטי הנתונים הללו הוא המקום שבו הבעיות מתעוררות במהלך ההמרה.
שיטת dbms_lob substr
כדי להמיר מחרוזת קלוב ל-varchar2, פתח את תוכנית SQL *Plus שלך. התחביר להמרה שאתה צריך לבצע הוא:
SELECT dbms_lob.substr( clob_column, for_how_many_bytes, from_which_byte ) FROM table
כאן הערכים בסוגריים הם אלה שאתה צריך לשנות, כמו גם "טבלה" בסוף. אלה תואמים לעמודה ("clob_column") ולטבלה שאיתה אתה עובד. ה-"for_how_many_bytes" נותן לך את האפשרות לציין כמה בתים של נתונים ברצונך להמיר, וה-"from_which_byte" מאפשר לך לציין נקודת התחלה.
לכן, אם יש לך טבלה בשם "מסים" ושדה בשם "net_pay", ובהנחה שאתה רוצה 4,000 בתים החל מהראשון, תזין:
בחר dbms_lob.substr (net_pay, 4000, 1) FROM taxes
כדי להמיר את המחרוזת לפורמט varchar2.
שיטת TO_CHAR
אתה יכול גם להשתמש בפקודה TO_CHAR עם תחביר דומה מאוד כדי להשיג את אותה מטרה:
SELECT TO_CHAR(SUBSTR (clob_column, 0,3999)) FROM table
כאן, בייט ההתחלה והסיום מצוינים כ-0 ו-3999 (עבור מחרוזת של 4,000 תווים שמתחילה מההתחלה), אבל השדות "clob_column" ו-"table" משמשים בדיוק באותו אופן כמו לפני. אז, באותה דוגמה, אתה יכול להזין:
SELECT TO_CHAR(SUBSTR (net_pay, 0,3999)) FROM taxes
בעיקרון, במקום להשלים את התהליך בשלב אחד, זה משתמש בפקודה SUBSTR כדי למשוך מחרוזת משנה מהמחרוזת הגדולה יותר, ואז הוא משתמש ב-"to_char" כדי לטפל בהמרה. אם בעמודת clob המדוברת יש פחות מ-4,000 בתים של מידע, ניתן להזין את שם העמודה בסוגריים אחרי to_char במקום לציין מחרוזת משנה.