SAP ประเภทข้อมูล HANA: ตัวเลข สตริงอักขระ ทศนิยม
⚡ สรุปอย่างชาญฉลาด
SAP ประเภทข้อมูลของ HANA กำหนดว่าแต่ละคอลัมน์สามารถจัดเก็บอะไรได้บ้าง ครอบคลุมถึงวันที่และเวลา ตัวเลข บูลีน สตริงอักขระ ไบนารี อ็อบเจ็กต์ขนาดใหญ่ และประเภทที่มีหลายค่า โดยแต่ละประเภทจะแมปข้อมูลไปยังประเภทข้อมูลอื่นๆping สำหรับประเภทจัดเก็บข้อมูลแบบคอลัมน์ที่เฉพาะเจาะจง

ในการนี้ SAP บทช่วยสอนประเภทข้อมูล HANA เราจะเรียนรู้:
1) SAP ประเภทข้อมูล HANA - SAP ประเภทข้อมูล HANA ได้แก่ วันที่ เวลา ประเภทข้อมูลตัวเลข บูลีน สตริงอักขระ ประเภทข้อมูลไบนารี ฯลฯ
2) SAP ตัวระบุ HANA – ตัวระบุแบบมีตัวคั่นและตัวระบุแบบไม่จำกัด
ประเภทข้อมูลใน SAP HANA
In SAP ฐานข้อมูลฮาน่า SQL ประเภทข้อมูลมีดังนี้:
| การจัดหมวดหมู่ | การจำแนกประเภทย่อย | ชนิดข้อมูล SQL | ประเภทร้านค้าคอลัมน์ | รูปแบบเริ่มต้น |
|---|---|---|---|---|
| ประเภทวันที่และเวลา | วันที่ | วัน | CS_DAYDATE | 'ปปปป-ดด-วว' |
| เวลา | เวลา | CS_SECONDTIME | 'HH24:MI:เอสเอส' | |
| วันที่สอง | วันที่สอง | CS_LONGDATE | 'ปปปป-ดด-วว HH24:MI:SS' | |
| แสตมป์เวลา | การประทับเวลา | CS_SECONDDATE | 'ปปปป-ดด-วว HH24:MI:SS.FFn' | |
| ประเภทตัวเลข | จำนวนเต็มจิ๋ว | ไทนี่อินท์ | ซีเอส_INT | จำนวนเต็ม 8 บิตที่ไม่มีเครื่องหมาย ช่วงค่า 0 ถึง 255 |
| จำนวนเต็มเล็ก | สมอลลินท์ | ซีเอส_INT | จำนวนเต็ม 16 บิตแบบมีเครื่องหมาย ช่วงค่า -32,768 ถึง 32,767 | |
| จำนวนเต็ม | จำนวนเต็ม | ซีเอส_INT | จำนวนเต็ม 32 บิตแบบมีเครื่องหมาย ช่วงค่า -2,147,483,648 ถึง 2,147,483,647 | |
| จำนวนเต็มใหญ่ | บิ๊กอินท์ | CS_แก้ไข(18,0) | จำนวนเต็ม 64 บิตแบบมีเครื่องหมาย ช่วงค่า -9,223,372,036,854,775,808 ถึง 9,223,372,036,854,775,807 | |
| ทศนิยม | ทศนิยม(p,s) p-พรีซิชั่น s-สเกล |
CS_FIXED(ปล.) | ความแม่นยำ p มีตั้งแต่ 1 ถึง 38 มาตราส่วน s มีตั้งแต่ 0 ถึง p สำหรับ SAP ชนิดข้อมูลทศนิยมของ HANA หากไม่ได้ระบุความแม่นยำและมาตราส่วน DECIMAL จะกลายเป็นเลขทศนิยมทศนิยม |
|
| ทศนิยมเล็ก | ทศนิยมขนาดเล็ก | CS_SDFLOAT | เป็นเลขทศนิยมทศนิยม ความแม่นยำและมาตราส่วนควรอยู่ในช่วง 1~16 สำหรับความแม่นยำ และ -369~368 สำหรับมาตราส่วน ขึ้นอยู่กับค่าที่เก็บไว้ SMALLDECIMAL รองรับเฉพาะตารางจัดเก็บคอลัมน์เท่านั้น | |
| เบอร์จริง | REAL | CS_FLOAT | ตัวเลขทศนิยม 32 บิตที่มีความแม่นยำสูง | |
| Double จำนวน | ซ้อน | CS_คู่ | ตัวเลขจุดลอยตัว 64 บิตที่มีความแม่นยำสองเท่า | |
| ลอย | ลอย(n) | CS_คู่ | เป็นจำนวนจริง 32 บิตหรือ 64 บิต โดยที่ n ระบุจำนวนบิตและควรอยู่ในช่วงระหว่าง 1 ถึง 53 | |
| บูลีน | บูลีน | บูลีน | ซีเอส_INT | จริง เท็จ และไม่ทราบ (NULL) |
| สายอักขระ | สตริงอักขระความยาวผันแปรได้ | VARCHAR (n) | CS_STRING | ชนิดข้อมูลความยาวสตริง HANA นี้เป็นสตริงอักขระที่มีความยาวแปรผันได้ โดยที่ 'n' ระบุความยาวสูงสุดเป็นไบต์ และค่านี้เป็นจำนวนเต็มระหว่าง 1 ถึง 5000 |
| อักขระ Unicode ที่มีความยาวผันแปรได้ | นาวาร์ชาร์(n) | CS_STRING | สตริงชุดอักขระ Unicode ที่มีความยาวผันแปรได้ โดยที่ ระบุความยาวสูงสุดเป็นอักขระและเป็นจำนวนเต็มระหว่าง 1 ถึง 5000 | |
| อักขระตัวเลขอัลฟ่า | อัลฟานัม(n) | CS_ALPHANUM | อักขระตัวอักษรและตัวเลขความยาวผันแปรได้ โดยที่ n หมายถึงความยาวสูงสุดและเป็นจำนวนเต็มระหว่าง 1 ถึง 127 | |
| ข้อความสั้น ๆ | SHORTTEXT(n) | CS_STRING | เป็นสตริงอักขระที่มีความยาวแปรผันได้ ซึ่งมีคุณสมบัติการค้นหาข้อความและการค้นหาสตริง ชนิดข้อมูลนี้สามารถกำหนดได้สำหรับตารางแบบคอลัมน์ แต่ไม่สามารถกำหนดได้สำหรับตารางแบบแถว | |
| ประเภทไบนารี | ข้อความไบนารี | ตัวแปร(n) | CS_RAW | จัดเก็บข้อมูลไบนารี่ที่มีความยาวสูงสุดที่ระบุเป็นไบต์ โดยที่ n ระบุความยาวสูงสุดและเป็นจำนวนเต็มระหว่าง 1 ถึง 5000 |
| ประเภท LOB (ประเภทวัตถุขนาดใหญ่) | LOB ไบนารี | หยด | CS_RAW | ข้อมูลไบนารีจำนวนมาก |
| ตัวละคร LOB | คลับ | CS_STRING | ข้อมูลอักขระ ASCII | |
| LOB อักขระ Unicode | ปชป | CS_STRING | วัตถุอักขระ Unicode ขนาดใหญ่ | |
| TEXT | TEXT | CS_STRING | ชนิดข้อมูล TEXT มีคุณสมบัติการค้นหาข้อความ ชนิดข้อมูลนี้สามารถกำหนดให้กับตาราง Store ของคอลัมน์ได้ แต่ไม่ใช่สำหรับตารางที่จัดเก็บแถว | |
| ข้อมูลข้อความไบนารี | บินเท็กซ์ | CS_STRING | ชนิดข้อมูล BINTEXT นั้นคล้ายคลึงกับชนิดข้อมูล TEXT และรองรับคุณสมบัติการค้นหาข้อความ แต่สามารถแทรกข้อมูลไบนารี่ได้ ชนิดข้อมูลนี้สามารถกำหนดให้กับตารางคอลัมน์ได้ แต่ไม่ใช่สำหรับตารางแถว | |
| ประเภทที่มีหลายค่า | แถว | อาร์เรย์ | มันเก็บคอลเลกชันของค่าประเภทข้อมูลเดียวกันโดยที่แต่ละองค์ประกอบเกี่ยวข้องกับตำแหน่งเดียวเท่านั้น อาร์เรย์สามารถมีค่า NULL ได้เช่นเดียวกับในกรณีที่ไม่มีค่า |
การเลือกที่เหมาะสม SAP ประเภทข้อมูล HANA
ตารางด้านบนแสดงรายการสิ่งที่มีอยู่ การเลือกอย่างรอบคอบมีความสำคัญมากกว่าใน SAP HANA มีประสิทธิภาพดีกว่าฐานข้อมูลที่จัดเก็บในดิสก์ เนื่องจากทุกคอลัมน์จะถูกเก็บไว้ในหน่วยความจำ และชนิดข้อมูลขนาดใหญ่จะใช้ทรัพยากรที่มีจำกัดในแต่ละแถว
กฎสี่ข้อนี้ครอบคลุมการตัดสินใจส่วนใหญ่:
- เลือกชนิดตัวเลขที่เล็กที่สุดที่เหมาะสม แฟล็กสถานะที่มีค่าที่เป็นไปได้ห้าค่า ต้องใช้ชนิดข้อมูล TINYINT ไม่ใช่ INTEGER ในตารางที่มีข้อมูลนับพันล้านแถว ความแตกต่างนี้จะวัดได้เป็นกิกะไบต์ของหน่วยความจำ
- ห้ามเก็บเงินในรูปของเงินสดหรือเงินดอลลาร์เด็ดขาด ตัวเลขทศนิยมไม่สามารถแสดงค่าเศษส่วนได้อย่างแม่นยำ ดังนั้นผลรวมจึงอาจคลาดเคลื่อนไปบ้างตามเศษส่วนของหน่วยเงิน ควรใช้ฟังก์ชัน DECIMAL โดยระบุความแม่นยำและมาตราส่วนอย่างชัดเจน
- ควรเลือกใช้ NVARCHAR มากกว่า VARCHAR VARCHAR นับไบต์ ในขณะที่ NVARCHAR นับอักขระ ดังนั้นข้อความที่ไม่ใช่ ASCII จะถูกตัดทอนอย่างไม่คาดคิดใน VARCHAR (หมายเหตุ: ข้อความนี้อ่านยากและไม่สามารถแปลได้อย่างถูกต้อง) SAP ด้วยเหตุผลนี้เองที่ HANA เวอร์ชันต่างๆ จึงถือว่า VARCHAR เป็น NVARCHAR
- ความแม่นยำของวันที่ต้องตรงตามข้อกำหนด ใช้ DATE สำหรับวันในปฏิทิน, SECONDDATE สำหรับเวลาที่ต้องการความแม่นยำระดับต่ำกว่าวินาที และ TIMESTAMP เฉพาะเมื่อต้องการความแม่นยำระดับต่ำกว่าวินาทีเท่านั้น แต่ละระดับที่เพิ่มขึ้นจะใช้พื้นที่จัดเก็บข้อมูลในแต่ละแถวเพิ่มขึ้น
ประเภทข้อมูลขนาดใหญ่ต้องใช้ความระมัดระวังเป็นพิเศษ คอลัมน์ BLOB หรือ NCLOB สะดวกแต่มีขนาดใหญ่ และการค้นหาข้อความใน TEXT หรือ SHORTTEXT ใช้ได้เฉพาะกับตารางแบบคอลัมน์สโตร์เท่านั้น ดังนั้นตัวเลือกการจัดเก็บและตัวเลือกประเภทข้อมูลจึงเชื่อมโยงกัน ตัวเลือกการจัดเก็บจะกล่าวถึงในหัวข้อต่อไป SAP ฮาน่า SQL เกี่ยวกับการสอน
SAP ตัวระบุ HANA
ตัวระบุใช้เพื่อแสดงชื่อใน SQL คำสั่ง (เช่น ชื่อตาราง ชื่อมุมมอง ชื่อคอลัมน์ ชื่อดัชนี ชื่อคำพ้องความหมาย ชื่อขั้นตอน ชื่อฟังก์ชัน ฯลฯ)
ตัวระบุมีสองประเภทใน SAP HANA: ตัวระบุแบบมีตัวคั่นและตัวระบุแบบไม่มีตัวคั่น
- ตัวระบุแบบมีตัวคั่น – มันถูกล้อมรอบด้วยตัวคั่น, Double คำคม “”. ตัวระบุสามารถมีอักขระใดก็ได้รวมถึงอักขระพิเศษ
- ตัวระบุไม่จำกัด – ตัวระบุแบบไม่จำกัด (ชื่อตาราง ชื่อคอลัมน์) ต้องขึ้นต้นด้วยตัวอักษร และต้องไม่มีสัญลักษณ์ใดๆ นอกเหนือจากตัวเลขหรือขีดล่าง '_'
เครื่องหมายคำพูดสำหรับคั่นมีสองประเภทดังนี้ -
- เครื่องหมายคำพูดเดี่ยว ('' ') – ใช้เพื่อกำหนดเขตสตริง
- Double เครื่องหมายคำพูด (” “)– ใช้สำหรับการกำหนดเขตตัวระบุ
⚠️คำเตือน: เมื่อสร้างอ็อบเจ็กต์ ตัวระบุที่ไม่มีตัวคั่นจะถูกแปลงเป็นตัวพิมพ์ใหญ่ การสร้างตารางชื่อ employee แล้วเลือกข้อมูลจาก “employee” ด้วยตัวพิมพ์เล็กในภายหลังจะล้มเหลว เนื่องจากชื่อที่จัดเก็บไว้คือ EMPLOYEE ควรหลีกเลี่ยงการใช้เครื่องหมายอัญประกาศคู่โดยสิ้นเชิง หรือใช้เครื่องหมายอัญประกาศคู่ให้สม่ำเสมอ
การแปลงชนิดข้อมูลและข้อผิดพลาดที่พบบ่อย
SAP HANA แปลงประเภทข้อมูลที่เข้ากันได้โดยอัตโนมัติ แต่การแปลงโดยปริยายนี้เป็นสาเหตุเงียบๆ ที่ทำให้เกิดผลลัพธ์ที่ไม่ถูกต้องและทำให้การค้นหาข้อมูลช้าลง การแปลงโดยชัดแจ้งจะทำให้เห็นเจตนาได้อย่างชัดเจน
ฟังก์ชันสองฟังก์ชันทำหน้าที่นี้ ฟังก์ชัน CAST แปลงค่าเป็นชนิดข้อมูลที่กำหนด และฟังก์ชัน TO_DATE, TO_VARCHAR, TO_DECIMAL และฟังก์ชันที่เกี่ยวข้องจะแปลงค่าโดยใช้สตริงรูปแบบเสริม
-- Explicit conversion with CAST SELECT CAST('1234' AS INTEGER) FROM DUMMY; -- Conversion with an explicit format SELECT TO_DATE('2026-07-21', 'YYYY-MM-DD') FROM DUMMY; -- Number to string with fixed decimals SELECT TO_DECIMAL(1234.5678, 10, 2) FROM DUMMY;
ข้อผิดพลาดสี่ประการต่อไปนี้เป็นสาเหตุหลักของปัญหาการแปลงไฟล์ส่วนใหญ่:
- เกิดข้อผิดพลาดค่าเกินขีดจำกัด (Numerial overflow) การแทรกค่า 40000 ลงใน SMALLINT ล้มเหลวเนื่องจากช่วงค่าที่มีเครื่องหมายสิ้นสุดที่ 32,767 ข้อความแสดงข้อผิดพลาดระบุชื่อคอลัมน์แทนที่จะเป็นค่า ดังนั้นควรตรวจสอบคำจำกัดความก่อน
- การตัดทอนข้อความ การโหลดข้อความที่มีความยาวเกินกว่าที่กำหนดไว้จะทำให้เกิดข้อผิดพลาดแทนที่จะตัดข้อความโดยไม่แจ้งให้ทราบล่วงหน้า นับจำนวนอักขระสำหรับชนิดข้อมูล NVARCHAR และจำนวนไบต์สำหรับชนิดข้อมูล VARCHAR
- รูปแบบวันที่ไม่ถูกต้อง การส่งสตริงที่มีรูปแบบไม่ถูกต้องไปยัง TO_DATE จะทำให้เกิดข้อผิดพลาด ควรระบุรูปแบบการแสดงผลแทนการใช้ค่าเริ่มต้นของเซสชันเสมอ
- การแปลงโดยปริยายในเงื่อนไข WHERE การเปรียบเทียบค่าตัวอักษรในคอลัมน์กับตัวเลขจะทำให้ต้องแปลงค่าในทุกแถว ซึ่งจะทำให้การกรองข้อมูลมีประสิทธิภาพลดลง ควรแปลงค่าคงที่แทนที่จะแปลงคอลัมน์
สัญลักษณ์เปรียบเทียบที่ใช้ในตัวกรองเหล่านี้มีอธิบายไว้ใน SAP ผู้ดำเนินการ HANAและแพลตฟอร์มที่กว้างขึ้นใน SAP บทช่วยสอน HANA ชุด.
