การแปลงข้อมูลในรูปแบบสตริงระหว่างประเภทข้อมูลต่างๆ มักจะเป็นกระบวนการที่ไม่ซับซ้อนใน Oracle แต่บางกรณีก็มีความท้าทายมากกว่าอย่างอื่นเล็กน้อย สิ่งเหล่านี้เกิดขึ้นเมื่อคุณใช้ Oracle เพื่อแปลง clob เป็น varchar2 ซึ่งยากเพราะ คอลัมน์ varchar2 มีอักขระสูงสุด 4,000 ตัว ในขณะที่ clob สามารถเก็บอักขระได้จำนวนมาก ข้อมูล. คุณยังสามารถบรรลุเป้าหมายได้โดยใช้เมธอดย่อย dbms_lob หรือ to_char แล้วระบุขนาดสูงสุด
CLOB และ VARCHAR2 อธิบาย
CLOB (หรือ "clob" เรียกขาน) เป็นตัวย่อสำหรับ "character large object" และสามารถจัดเก็บข้อมูลได้ถึง 4 GB ใช้โดยระบบฐานข้อมูลหลายระบบ รวมทั้ง DB2 และ Oracle CLOB มีประโยชน์เมื่อคุณต้องการจัดเก็บข้อมูลจำนวนมาก แต่ขนาดอาจทำให้เกิดปัญหาได้ในบางสถานการณ์ นี่คือสาเหตุที่การแปลงจาก Oracle CLOB ไปเป็นรูปแบบสตริงที่มีขนาดที่สามารถจัดการได้ง่ายกว่าจึงมักเป็นวิธีที่ดีก่อนดำเนินการ
วิดีโอประจำวันนี้
รูปแบบ VARCHAR2 จัดเก็บข้อมูลจำนวนน้อยกว่า ซึ่งปกติจะสูงถึง 4,000 ไบต์ เว้นแต่คุณจะใช้ขนาดสตริงสูงสุดที่ขยายออกไป ในกรณีนี้ ข้อมูลนั้นสามารถขยายได้ถึง 32,767 ไบต์ สำหรับชุดอักขระแบบไบต์เดี่ยว โดยปกติแล้วจะมีอักขระได้ไม่เกิน 4,000 ตัวในคอลัมน์ ความคลาดเคลื่อนระหว่างขนาดสูงสุดของรูปแบบข้อมูลทั้งสองนี้คือปัญหาที่เกิดขึ้นระหว่างการแปลง
dbms_lob substr Method
ในการแปลงสตริง clob เป็น varchar2 ให้เปิดโปรแกรม SQL *Plus ของคุณ ไวยากรณ์สำหรับการแปลงที่คุณต้องดำเนินการคือ:
เลือก dbms_lob.substr ( clob_column, for_how_many_bytes, from_which_byte ) จากตาราง
ค่าในวงเล็บคือค่าที่คุณต้องเปลี่ยน รวมถึง "ตาราง" ในตอนท้าย สิ่งเหล่านี้สอดคล้องกับคอลัมน์ ("clob_column") และตารางที่คุณกำลังทำงานด้วย "for_how_many_bytes" ให้โอกาสคุณระบุจำนวนไบต์ของข้อมูลที่คุณต้องการแปลง และ "from_which_bytes" ให้คุณระบุจุดเริ่มต้นได้
ดังนั้น หากคุณมีตารางชื่อ "taxes" และช่องชื่อ "net_pay" และสมมติว่าคุณต้องการ 4,000 ไบต์โดยเริ่มจากช่องแรก คุณจะต้องป้อน:
เลือก dbms_lob.substr (net_pay, 4000, 1) จากภาษี
ในการแปลงสตริงเป็นรูปแบบ varchar2
วิธี TO_CHAR
คุณยังสามารถใช้คำสั่ง TO_CHAR ที่มีรูปแบบคล้ายกันมากเพื่อให้บรรลุเป้าหมายเดียวกันได้:
SELECT TO_CHAR(SUBSTR (clob_column, 0,3999)) จากตาราง
ที่นี่ ไบต์เริ่มต้นและสิ้นสุดถูกระบุเป็น 0 และ 3999 (สำหรับสตริงอักขระเริ่มต้น 4,000 ตัว จากจุดเริ่มต้น) แต่มีการใช้ฟิลด์ "clob_column" และ "table" ในลักษณะเดียวกับ ก่อน. ในตัวอย่างเดียวกัน คุณสามารถป้อน:
SELECT TO_CHAR(SUBSTR (net_pay, 0,3999)) จากภาษี
โดยทั่วไป แทนที่จะดำเนินการให้เสร็จสิ้นในขั้นตอนเดียว คำสั่ง SUBSTR จะใช้คำสั่ง SUBSTR เพื่อดึงสตริงย่อยจากสตริงที่ใหญ่กว่า จากนั้นใช้ "to_char" เพื่อจัดการการแปลง หากคอลัมน์ clob ที่เป็นปัญหามีข้อมูลน้อยกว่า 4,000 ไบต์ คุณสามารถป้อนชื่อของคอลัมน์ในวงเล็บหลัง to_char แทนที่จะระบุสตริงย่อย