SAP HANA Union & Union All: Operaตัวอย่างสำหรับ
⚡ สรุปอย่างชาญฉลาด
SAP HANA OperaTor ทำหน้าที่คำนวณ เปรียบเทียบค่า หรือกำหนดค่าภายใน SQL โดยมีตัวดำเนินการอยู่ 6 ประเภท ได้แก่ ตัวดำเนินการเอกภาคและทวิภาค ตัวดำเนินการทางคณิตศาสตร์ ตัวดำเนินการสตริง ตัวดำเนินการเปรียบเทียบ ตัวดำเนินการตรรกะ และตัวดำเนินการเซต เช่น UNION และ INTERSECT

SAP HANA OperaTor สามารถใช้ในการคำนวณ เปรียบเทียบค่า หรือกำหนดค่าได้
SAP HANA Operaโปร
- เอกนารีและไบนารี OperaTor
- คณิตศาสตร์ OperaTor
- เชือก Operaโปร
- การเปรียบเทียบ OperaTor
- ตรรกะ OperaTor
- ชุด OperaTor
ตัวดำเนินการทุกตัวจะส่งคืนค่า ซึ่งเป็นเหตุผลว่าทำไมจึงสามารถซ้อนกันได้ ลำดับการประเมินผลจะถูกกำหนดโดยลำดับความสำคัญ ซึ่งจะอธิบายหลังจากกลุ่มตัวดำเนินการแต่ละกลุ่ม
เอกนารีและไบนารี OperaTor
| OperaTor | Operaการ | Descriptไอออน |
|---|---|---|
| ยูนารี | ตัวดำเนินการยูนารีใช้กับตัวดำเนินการหนึ่งตัว | ตัวดำเนินการบวกเอกภาค (+) ตัวดำเนินการปฏิเสธเอกภาค (-) การปฏิเสธเชิงตรรกะ (NOT) |
| เลขฐานสอง | ไบนารี Operator ใช้กับตัวดำเนินการสองตัว | ตัวดำเนินการคูณ ( *, / ) ตัวดำเนินการบวก ( +,- ) ตัวดำเนินการเปรียบเทียบ ( =,!=,<,>,<=,>=) ตัวดำเนินการตรรกะ ( AND, OR ) |
คณิตศาสตร์ OperaTor
- บวก (+)
- ตtraction (-)
- การคูณ ( * )
- แผนก ( / )
เชือก OperaTor
สตริง Operator คือตัวดำเนินการเรียงต่อกันซึ่งรวมรายการสองรายการ เช่น สตริง นิพจน์ หรือค่าคงที่เข้าเป็นหนึ่งเดียว
แถบแนวตั้งสองอัน “||” ใช้เป็นตัวดำเนินการเรียงต่อกัน
การเปรียบเทียบ OperaTor
ตัวดำเนินการเปรียบเทียบใช้ในการเปรียบเทียบตัวดำเนินการสองตัว ด้านล่างนี้คือรายการตัวดำเนินการเปรียบเทียบ Operaทอร์-
- เท่ากับ ( = )
- มากกว่า ( > )
- Less กว่า ( < )
- มากกว่าหรือเท่ากับ ( >= )
- Less มากกว่าหรือเท่ากับ ( <= )
- ไม่เท่ากัน (!= , <> )
ตรรกะ OperaTor
ตัวดำเนินการเชิงตรรกะใช้ในเกณฑ์การค้นหา
เช่น WHERE เงื่อนไข 1 และ / OR / NOT เงื่อนไข 2
ด้านล่างนี้เป็นรายการตัวดำเนินการเชิงตรรกะ –
- และ – (เช่น WHERE condition1 AND condition2)
ถ้าทั้งเงื่อนไข 1 และเงื่อนไข 2 เป็นจริง ดังนั้นเงื่อนไขการรวมจะเป็นจริง มิเช่นนั้นจะเป็นเท็จ - หรือ – (เช่น WHERE condition1 OR condition2)
หากเงื่อนไข 1 หรือ เงื่อนไข 2 เป็นจริง ให้รวมเงื่อนไขเป็นจริงหรือเท็จ หากเงื่อนไขทั้งสองเป็นเท็จ - ไม่ใช่ – (เช่น เงื่อนไข WHERE NOT)
NOT เงื่อนไขเป็นจริง ถ้าเงื่อนไขเป็นเท็จ
ชุด Operaโปร
- UNION – คำสั่งที่ใช้รวมคำสั่ง SELECT หรือแบบสอบถามสองคำสั่งขึ้นไปเข้าด้วยกันโดยไม่ซ้ำซ้อน
- UNION ALL – คำสั่งนี้ใช้สำหรับรวมคำสั่ง SELECT หรือแบบสอบถามหลายรายการเข้าด้วยกัน รวมถึงแถวข้อมูลที่ซ้ำกันทั้งหมดด้วย
- INTERSECT – รวมคำสั่ง SELECT หรือแบบสอบถามสองคำสั่งขึ้นไปเข้าด้วยกัน และส่งคืนแถวที่เหมือนกันทั้งหมด
- ยกเว้น – นำผลลัพธ์จากคำสั่งค้นหาแรกมาใช้ และลบแถวที่เลือกโดยคำสั่งค้นหาที่สองออก
เช่น ฉันมีสองตาราง (table1, table2) ซึ่งบางค่าเป็นเรื่องธรรมดา
เราใช้ตัวดำเนินการ Set (Union, Union ALL, Intersect, except) สำหรับตารางทั้งสองนี้ SQL ดังต่อไปนี้ -
สร้าง Table1- สคริปต์ SQL
CREATE COLUMN TABLE DHK_SCHEMA.TABLE1 ( ELEMENT CHAR(1), PRIMARY KEY (ELEMENT) ); INSERT INTO DHK_SCHEMA.TABLE1 VALUES ('P'); INSERT INTO DHK_SCHEMA.TABLE1 VALUES ('Q'); INSERT INTO DHK_SCHEMA.TABLE1 VALUES ('R'); INSERT INTO DHK_SCHEMA.TABLE1 VALUES ('S'); INSERT INTO DHK_SCHEMA.TABLE1 VALUES ('T');
สร้าง Table2- สคริปต์ SQL
CREATE COLUMN TABLE DHK_SCHEMA.TABLE2 ( ELEMENT CHAR(1), PRIMARY KEY (ELEMENT) ); INSERT INTO DHK_SCHEMA.TABLE2 VALUES ('S'); INSERT INTO DHK_SCHEMA.TABLE2 VALUES ('T'); INSERT INTO DHK_SCHEMA.TABLE2 VALUES ('U'); INSERT INTO DHK_SCHEMA.TABLE2 VALUES ('V'); INSERT INTO DHK_SCHEMA.TABLE2 VALUES ('W');
หมายเหตุ: ที่นี่ “DHK_SCHEMA” คือชื่อสคีมา ผู้ใช้สามารถเปลี่ยนชื่อสคีมาได้ SQL ตาม
ชุด Operaตัวอย่างของ Tor มีดังนี้
| OperaTor | แบบสอบถาม SQL | เอาท์พุต | การใช้งาน |
|---|---|---|---|
| ยูเนี่ยน | SELECT * จาก ( SELECT ELEMENT จาก DHK_SCHEMA.TABLE1 ยูเนี่ยน SELECT ELEMENT จาก DHK_SCHEMA.TABLE2 ) สั่งโดย องค์ประกอบ; |
รวมผลลัพธ์ของแบบสอบถามตั้งแต่สองรายการขึ้นไปโดยไม่ซ้ำกัน | |
| ยูเนี่ยนทั้งหมด | SELECT * จาก ( SELECT ELEMENT จาก DHK_SCHEMA.TABLE1 ยูเนี่ยนทั้งหมด SELECT ELEMENT จาก DHK_SCHEMA.TABLE2 ) สั่งโดย องค์ประกอบ; |
รวมผลลัพธ์ของแบบสอบถามตั้งแต่สองรายการขึ้นไปเข้ากับรายการที่ซ้ำกันทั้งหมด | |
| ตัด | SELECT * จาก ( SELECT ELEMENT จาก DHK_SCHEMA.TABLE1 ตัด SELECT ELEMENT จาก DHK_SCHEMA.TABLE2 ) สั่งโดย องค์ประกอบ; |
รวมผลลัพธ์ของแบบสอบถามตั้งแต่สองรายการขึ้นไปเข้ากับแถวทั่วไปทั้งหมด | |
| ยกเว้น | SELECT * จาก ( SELECT ELEMENT จาก DHK_SCHEMA.TABLE1 ยกเว้น SELECT ELEMENT จาก DHK_SCHEMA.TABLE2 ) สั่งโดย องค์ประกอบ; |
รับเอาต์พุตจากการสืบค้นครั้งแรกและลบแถวที่เลือกโดยแบบสอบถามที่สอง |
ชุด Operaกฎและข้อกำหนดของ tor
ตัวดำเนินการเซตดูเรียบง่าย แต่ปฏิเสธการค้นหาได้ง่าย เนื่องจากเปรียบเทียบชุดผลลัพธ์ทั้งหมดแทนที่จะเปรียบเทียบค่าแต่ละค่า มีกฎสี่ข้อที่ควบคุมตัวดำเนินการเหล่านี้
- จำนวนคอลัมน์ต้องตรงกัน คำสั่ง SELECT ทั้งสองคำสั่งต้องส่งคืนจำนวนคอลัมน์ที่เท่ากัน หากไม่ตรงกัน ระบบจะล้มเหลวทันที และข้อความแสดงข้อผิดพลาดจะระบุตำแหน่งแทนที่จะเป็นคอลัมน์
- ชนิดข้อมูลต้องเข้ากันได้ คอลัมน์แรกของแบบสอบถามแรกจะถูกเปรียบเทียบกับคอลัมน์แรกของแบบสอบถามที่สอง และทำเช่นนี้ต่อไปเรื่อยๆ โดยพิจารณาจากตำแหน่ง ไม่ใช่ชื่อ ประเภทตัวเลขที่เข้ากันได้จะถูกแปลงโดยอัตโนมัติ ส่วนคอลัมน์ที่เป็นอักขระที่ใช้กับวันที่นั้นจะไม่ถูกแปลง
- ชื่อคอลัมน์มาจากคำสั่งค้นหาแรก ไม่ว่าคำสั่งที่สองจะเรียกคอลัมน์ใด ระบบก็จะไม่สนใจในผลลัพธ์ ซึ่งทำให้ผู้ที่อ่านผลลัพธ์ของคำสั่ง UNION เป็นครั้งแรกประหลาดใจ
- คำสั่ง ORDER BY มีผลกับผลลัพธ์ทั้งหมด ควรวางไว้ตอนท้ายสุด หลังคำสั่ง SELECT สุดท้าย และนี่คือเหตุผลที่ตัวอย่างข้างต้นใช้คำสั่ง SELECT ครอบคำสั่ง union ไว้ด้านนอก
ความแตกต่างด้านประสิทธิภาพระหว่าง UNION และ UNION ALL นั้นควรค่าแก่การสังเกต UNION ต้องเรียงลำดับหรือแฮชผลลัพธ์ที่รวมกันเพื่อลบข้อมูลซ้ำ ในขณะที่ UNION ALL เพียงแค่เพิ่มข้อมูลเข้าไป ในกรณีที่ข้อมูลซ้ำเป็นไปไม่ได้หรือยอมรับได้ UNION ALL จะเร็วกว่าอย่างเห็นได้ชัดในตารางขนาดใหญ่ คำจำกัดความของคอลัมน์ที่ใช้ในตารางเหล่านี้จะกล่าวถึงในหัวข้อถัดไป SAP ประเภทข้อมูล HANA.
Operaลำดับความสำคัญใน SAP ฮาน่า SQL
เมื่อมีตัวดำเนินการหลายตัวปรากฏในนิพจน์เดียวกัน ลำดับความสำคัญจะเป็นตัวตัดสินว่าตัวดำเนินการใดจะถูกประเมินก่อน หากทำผิดพลาดในส่วนนี้ จะทำให้คำสั่งค้นหาทำงานได้อย่างสมบูรณ์ แต่ส่งคืนแถวที่ไม่ถูกต้อง ซึ่งอันตรายกว่าข้อผิดพลาดทางไวยากรณ์มาก
| สั่งซื้อ | โอเปอร์เตอร์-ผู้ประกอบการ | Category |
|---|---|---|
| 1 | () | วงเล็บ จะต้องได้รับการประเมินก่อนเสมอ |
| 2 | + – (ตัวดำเนินการเดี่ยว) | เครื่องหมายบวกและเครื่องหมายลบเอกภาค |
| 3 | * / | การคูณและการหาร |
| 4 | + – || | การบวก, ย่อยtracการเชื่อมต่อ, การต่อกัน |
| 5 | = != < > <= >= | การเปรียบเทียบ |
| 6 | ไม่ | การปฏิเสธเชิงตรรกะ |
| 7 | AND | การเชื่อมโยงเชิงตรรกะ |
| 8 | OR | การแยกตรรกะ |
กับดักแบบคลาสสิกอยู่ที่แถวที่ 7 และ 8 เนื่องจาก AND ผูกมัดแน่นกว่า OR เงื่อนไขจึงเป็นเช่นนั้น โดยที่ภูมิภาค = 'ตะวันออก' หรือ ภูมิภาค = 'ตะวันตก' และสถานะ = 'เปิด' อ่านว่า ทิศตะวันออก หรือไม่ก็ทิศตะวันตกที่เปิดอยู่ทุกแถวทางทิศตะวันออกจะถูกส่งคืนโดยไม่คำนึงถึงสถานะ การเพิ่มวงเล็บครอบการทดสอบภูมิภาคทั้งสองจะช่วยแก้ไขปัญหานี้ได้
💡 เคล็ดลับ: ใส่เครื่องหมายวงเล็บรอบเงื่อนไข AND และ OR ที่ผสมกันทุกเงื่อนไข แม้ว่าลำดับความสำคัญจะให้ผลลัพธ์ที่ต้องการอยู่แล้วก็ตาม การทำเช่นนี้จะทำให้แบบสอบถามมีความชัดเจนในตัวเองและยังคงใช้งานได้แม้จะมีการแก้ไขในภายหลังโดยนักพัฒนาคนอื่น
ไวยากรณ์คำสั่งทั่วไปที่ใช้ในชีวิตประจำวันนั้นครอบคลุมอยู่ใน... SAP ฮาน่า SQL บทช่วยสอน และแพลตฟอร์มที่กว้างขึ้นใน SAP บทช่วยสอน HANA ชุด.





