მონაცემთა კონვერტაცია სიმებიანი ფორმატში მონაცემთა სხვადასხვა ტიპებს შორის, ჩვეულებრივ, მარტივი პროცესია Oracle-ში, მაგრამ ზოგიერთი შემთხვევა ოდნავ უფრო რთულია, ვიდრე სხვები. ერთ-ერთი ასეთი ხდება, როდესაც იყენებთ Oracle-ს clob-ის varchar2-ად გადაქცევისთვის, რაც რთულია, რადგან ა varchar2 სვეტს აქვს მაქსიმუმ 4000 სიმბოლო, ხოლო clob-ს შეუძლია უზარმაზარი რაოდენობის სიმბოლოების შენახვა მონაცემები. თქვენ მაინც შეგიძლიათ მიაღწიოთ თქვენს მიზანს, თუმცა, dbms_lob substr მეთოდის ან to_char გამოყენებით და მაქსიმალური ზომის მითითებით.
CLOB და VARCHAR2 განმარტა
CLOB (ან "clob" კოლოკვიურად) არის აკრონიმი "სიმბოლო დიდი ობიექტის" და მას შეუძლია შეინახოს 4 გბ-მდე მონაცემები. მას იყენებს მონაცემთა ბაზის რამდენიმე სისტემა, მათ შორის DB2 და Oracle. CLOB სასარგებლოა, როდესაც საჭიროა დიდი რაოდენობით მონაცემების შენახვა, მაგრამ თავად ზომამ შეიძლება გამოიწვიოს პრობლემები ზოგიერთ სიტუაციაში. ამიტომაა, რომ Oracle CLOB-დან უფრო მართვადი ზომის სტრიქონების ფორმატზე კონვერტაცია ხშირად კარგი მიდგომაა ოპერაციების შესრულებამდე.
დღის ვიდეო
VARCHAR2 ფორმატი ინახავს მონაცემთა უფრო მცირე რაოდენობას, ჩვეულებრივ 4000 ბაიტამდე, თუ არ იყენებთ სტრიქონის გაფართოებულ მაქსიმალურ ზომას, ამ შემთხვევაში ის შეიძლება 32767 ბაიტამდე იყოს. ერთი ბაიტიანი სიმბოლოების ნაკრებისთვის, ჩვეულებრივ, შეგიძლიათ მიიღოთ 4000-მდე სიმბოლო სვეტში. შეუსაბამობა ამ ორი მონაცემთა ფორმატის მაქსიმალურ ზომებს შორის არის ის, სადაც პრობლემები წარმოიქმნება კონვერტაციის დროს.
dbms_lob substr მეთოდი
clob სტრიქონის varchar2-ად გადასაყვანად, გახსენით თქვენი SQL *Plus პროგრამა. კონვერტაციის სინტაქსი, რომელიც უნდა შეასრულოთ, არის:
აირჩიეთ dbms_lob.substr( clob_column, for_how_many_bytes, from_which_byte ) FROM ცხრილიდან
აქ მნიშვნელობები ფრჩხილებში არის ის, რაც თქვენ უნდა შეცვალოთ, ისევე როგორც "ცხრილი" ბოლოს. ისინი შეესაბამება სვეტს ("clob_column") და ცხრილს, რომლითაც მუშაობთ. "for_how_many_bytes" გაძლევთ საშუალებას მიუთითოთ რამდენი ბაიტი მონაცემების კონვერტაცია გსურთ, ხოლო "from_which_byte" გაძლევთ საშუალებას მიუთითოთ საწყისი წერტილი.
ასე რომ, თუ თქვენ გაქვთ ცხრილი სახელწოდებით "გადასახადები" და ველი სახელწოდებით "net_pay", და თუ ვივარაუდებთ, რომ გსურთ 4000 ბაიტი პირველიდან, თქვენ შეიყვანთ:
აირჩიეთ dbms_lob.substr (net_pay, 4000, 1) გადასახადებიდან
სტრიქონის გადაქცევა varchar2 ფორმატში.
TO_CHAR მეთოდი
თქვენ ასევე შეგიძლიათ გამოიყენოთ TO_CHAR ბრძანება ძალიან მსგავსი სინტაქსით იმავე მიზნის მისაღწევად:
SELECT TO_CHAR(SUBSTR (clob_column, 0,3999)) ცხრილიდან
აქ, დასაწყისი და დასასრული ბაიტი მითითებულია როგორც 0 და 3999 (4000 სიმბოლოს დაწყებული სტრიქონისთვის თავიდანვე), მაგრამ "clob_column" და "table" ველები გამოიყენება ზუსტად ისევე, როგორც ადრე. ასე რომ, იმავე მაგალითში შეგიძლიათ შეიყვანოთ:
აირჩიეთ TO_CHAR(SUBSTR (წმინდა_გადახდა, 0,3999)) გადასახადებიდან
ძირითადად, პროცესის ერთი ნაბიჯით დასრულების ნაცვლად, ის იყენებს SUBSTR ბრძანებას უფრო დიდი სტრიქონიდან ქვესტრიქონის გამოსაყვანად და შემდეგ იყენებს "to_char" კონვერტაციის დასამუშავებლად. თუ მოცემულ clob სვეტს აქვს 4000 ბაიტზე ნაკლები ინფორმაცია, შეგიძლიათ ჩაწეროთ სვეტის სახელი ფრჩხილებში to_char-ის შემდეგ, ქვესტრიქონის მითითების ნაცვლად.