SAP ประเภทข้อมูล HANA: ตัวเลข สตริงอักขระ ทศนิยม

⚡ สรุปอย่างชาญฉลาด

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

  • 🇧🇷 ประเภทวันที่และเวลา: DATE, TIME, SECONDDATE และ TIMESTAMP แตกต่างกันที่ความแม่นยำในการแสดงผล
  • 🔢 ช่วงตัวเลข: TINYINT ถึง BIGINT ครอบคลุมจำนวนเต็ม ในขณะที่ DECIMAL, SMALLDECIMAL, REAL และ DOUBLE จัดการกับเศษส่วน
  • 🔤 สตริงอักขระ: VARCHAR เก็บไบต์ และ NVARCHAR เก็บอักขระยูนิโค้ด โดยทั้งสองประเภทมีข้อจำกัดอยู่ที่ 5000
  • 📦 วัตถุขนาดใหญ่: BLOB, CLOB, NCLOB, TEXT และ BINTEXT เป็นชนิดข้อมูลที่ใช้จัดเก็บข้อมูลขนาดใหญ่เกินกว่าจะจัดเก็บในคอลัมน์ทั่วไปได้
  • 🔍 เปิดใช้งานการค้นหา: TEXT, BINTEXT และ SHORTTEXT รองรับการค้นหาข้อความเต็มรูปแบบ แต่ใช้ได้เฉพาะกับตารางแบบคอลัมน์สโตร์เท่านั้น
  • 🇧🇷 ตัวระบุ: ตัวระบุที่มีตัวคั่นจะอยู่ภายในเครื่องหมายอัญประกาศคู่และสามารถใช้ตัวอักษรใดก็ได้ ส่วนตัวระบุที่ไม่มีตัวคั่นจะต้องขึ้นต้นด้วยตัวอักษร
  • กฎการอ้างอิง: เครื่องหมายอัญประกาศเดี่ยวใช้สำหรับกำหนดขอบเขตของค่าสตริง และเครื่องหมายอัญประกาศคู่ใช้สำหรับกำหนดขอบเขตของตัวระบุ

SAP ประเภทข้อมูล HANA

ในการนี​​้ 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;

ข้อผิดพลาดสี่ประการต่อไปนี้เป็นสาเหตุหลักของปัญหาการแปลงไฟล์ส่วนใหญ่:

  1. เกิดข้อผิดพลาดค่าเกินขีดจำกัด (Numerial overflow) การแทรกค่า 40000 ลงใน SMALLINT ล้มเหลวเนื่องจากช่วงค่าที่มีเครื่องหมายสิ้นสุดที่ 32,767 ข้อความแสดงข้อผิดพลาดระบุชื่อคอลัมน์แทนที่จะเป็นค่า ดังนั้นควรตรวจสอบคำจำกัดความก่อน
  2. การตัดทอนข้อความ การโหลดข้อความที่มีความยาวเกินกว่าที่กำหนดไว้จะทำให้เกิดข้อผิดพลาดแทนที่จะตัดข้อความโดยไม่แจ้งให้ทราบล่วงหน้า นับจำนวนอักขระสำหรับชนิดข้อมูล NVARCHAR และจำนวนไบต์สำหรับชนิดข้อมูล VARCHAR
  3. รูปแบบวันที่ไม่ถูกต้อง การส่งสตริงที่มีรูปแบบไม่ถูกต้องไปยัง TO_DATE จะทำให้เกิดข้อผิดพลาด ควรระบุรูปแบบการแสดงผลแทนการใช้ค่าเริ่มต้นของเซสชันเสมอ
  4. การแปลงโดยปริยายในเงื่อนไข WHERE การเปรียบเทียบค่าตัวอักษรในคอลัมน์กับตัวเลขจะทำให้ต้องแปลงค่าในทุกแถว ซึ่งจะทำให้การกรองข้อมูลมีประสิทธิภาพลดลง ควรแปลงค่าคงที่แทนที่จะแปลงคอลัมน์

สัญลักษณ์เปรียบเทียบที่ใช้ในตัวกรองเหล่านี้มีอธิบายไว้ใน SAP ผู้ดำเนินการ HANAและแพลตฟอร์มที่กว้างขึ้นใน SAP บทช่วยสอน HANA ชุด.

คำถามที่พบบ่อย

VARCHAR วัดขีดจำกัดเป็นไบต์ และ NVARCHAR วัดเป็นอักขระยูนิโค้ด สำหรับข้อความใดๆ ที่อาจมีอักขระที่ไม่ใช่ ASCII นั้น NVARCHAR เป็นตัวเลือกที่ปลอดภัยกว่า เนื่องจากจะไม่ถูกตัดทอนโดยไม่คาดคิด

ใช้ SECONDDATE เมื่อต้องการความแม่นยำระดับวินาที ซึ่งครอบคลุมเหตุการณ์ทางธุรกิจส่วนใหญ่ TIMESTAMP จะเพิ่มเศษส่วนของวินาทีและใช้พื้นที่จัดเก็บข้อมูลมากขึ้นในแต่ละแถวของตารางขนาดใหญ่

ใช่แล้ว การวิเคราะห์ไฟล์ต้นฉบับจะเปิดเผยช่วงค่า ความยาว และรูปแบบที่แท้จริง ซึ่ง AI จะเสนอประเภทข้อมูลที่ปลอดภัยและมีขนาดเล็กที่สุดสำหรับแต่ละคอลัมน์ แทนที่จะใช้ค่าเริ่มต้นที่มีขนาดใหญ่เกินไปเพื่อป้องกันความผิดพลาด

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

TEXT, BINTEXT และ SHORTTEXT เป็นฟังก์ชันการค้นหาข้อความ ทั้งสามประเภทนี้จำกัดเฉพาะตารางแบบคอลัมน์สโตร์ และไม่สามารถกำหนดในตารางแบบแถวสโตร์ได้

สรุปโพสต์นี้ด้วย: