SAP Công đoàn HANA & Tất cả các công đoàn: OperaVí dụ về tor

⚡ Tóm tắt thông minh

SAP HANNA OperaTor thực hiện các phép tính, so sánh giá trị hoặc gán giá trị bên trong SQL. Có sáu nhóm toán tử: toán tử một ngôi và hai ngôi, toán tử số học, toán tử chuỗi, toán tử so sánh, toán tử logic và toán tử tập hợp như UNION và INTERSECT.

  • Đơn nguyên và nhị nguyên: Toán tử một ngôi nhận một toán hạng, còn toán tử hai ngôi nhận hai toán hạng.
  • 🧮 Môn số học: Phép cộng, phép trừtracPhép nhân, phép chia và phép toán số thực hiện trên các toán hạng là số.
  • 🔗 Nối chuỗi: Hai dấu gạch dọc nối các chuỗi ký tự, biểu thức hoặc hằng số thành một giá trị duy nhất.
  • ⚖️ so sánh: Bằng nhau, lớn hơn, nhỏ hơn, và sự kết hợp của chúng trả về một giá trị chân lý để lọc.
  • 🔀 Hợp lý: AND, OR và NOT kết hợp các điều kiện bên trong mệnh đề WHERE.
  • 🧩 Thiết lập Operator: UNION loại bỏ các phần tử trùng lặp, UNION ALL giữ lại các phần tử trùng lặp, INTERSECT trả về các hàng chung, EXCEPT subtracTs.
  • 📊 Ví dụ đã làm việc: Hai bảng có chung giá trị minh họa cho kết quả khác nhau của mỗi toán tử tập hợp.

SAP Các nhà điều hành HANA UNION và UNION ALL

SAP HANNA Operator có thể được sử dụng để tính toán, so sánh giá trị hoặc gán giá trị.

SAP HANNA Operaxoắn

  • Đơn nhất và nhị phân Operator
  • toán học Operator
  • Chuỗi Operaxoắn
  • sự so sánh Operator
  • logic Operator
  • Thiết lập Operator

Mỗi toán tử đều trả về một giá trị, đó là lý do tại sao chúng có thể lồng nhau. Thứ tự đánh giá của chúng được xác định bởi độ ưu tiên, được giải thích sau phần giới thiệu về từng nhóm toán tử.

Đơn nhất và nhị phân Operator

Operator Operasản xuất Mô tả Chi tiết
Đơn nguyên Toán tử một ngôi áp dụng cho một toán hạng Toán tử cộng đơn nguyên (+) Toán tử phủ định đơn nguyên (-) Phủ định logic (NOT)
Nhị phân Một nhị phân Operator áp dụng trên hai toán hạng Các toán tử nhân ( *, / ) Các toán tử cộng ( +,- ) Các toán tử so sánh ( =,!=,<,>,<=,>=) Các toán tử logic ( AND, OR )

toán học Operator

  • Phép cộng (+)
  • Subtraction (-)
  • Phép nhân ( * )
  • Phân công ( / )

Chuỗi Operator

Một chuỗi Operator là toán tử nối kết hợp hai mục như chuỗi, biểu thức hoặc hằng số thành một.

Hai thanh dọc “||” được sử dụng làm toán tử nối.

sự so sánh Operator

Toán tử so sánh được sử dụng để so sánh hai toán hạng. Dưới đây là danh sách các toán hạng so sánh Operator-

  • Bằng ( = )
  • Lớn Hơn ( > )
  • Less Hơn ( < )
  • Lớn hơn hoặc bằng ( >= )
  • Less lớn hơn hoặc bằng ( <= )
  • Không bằng (!= , <> )

logic Operator

Toán tử logic được sử dụng trong tiêu chí tìm kiếm.

Ví dụ WHERE điều kiện1 VÀ / HOẶC / KHÔNG điều kiện2

Dưới đây là danh sách toán tử logic –

  • VÀ – (ví dụ: WHERE condition1 AND condition2)
    Nếu cả Điều kiện 1 VÀ Điều kiện 2 đều đúng thì Điều kiện kết hợp là đúng, nếu không nó sẽ sai.
  • HOẶC – (ví dụ: WHERE condition1 OR condition2)
    Nếu Điều kiện 1 HOẶC Điều kiện 2 là đúng thì điều kiện kết hợp là đúng hoặc sai nếu cả hai Điều kiện đều sai.
  • KHÔNG – (ví dụ: điều kiện WHERE NOT)
    Điều kiện KHÔNG đúng Nếu Điều kiện sai.

Thiết lập Operaxoắn

  • UNION – Kết hợp hai hoặc nhiều câu lệnh SELECT hoặc truy vấn mà không trùng lặp.
  • UNION ALL – Kết hợp hai hoặc nhiều câu lệnh SELECT hoặc truy vấn, bao gồm tất cả các hàng trùng lặp.
  • INTERSECT – Kết hợp hai hoặc nhiều câu lệnh SELECT hoặc truy vấn, và trả về tất cả các hàng chung.
  • NGOẠI TRỪ – Lấy kết quả từ truy vấn đầu tiên và loại bỏ hàng được chọn bởi truy vấn thứ hai.

Ví dụ Tôi có hai bảng (table1, table2) trong đó một số giá trị là phổ biến.

Thiết lập Operaxoắn trong SAP HANNA

Chúng tôi sử dụng toán tử Set (Union, Union ALL, Intersect, ngoại trừ) cho hai bảng này trong SQL như sau -

Tạo Table1- Tập lệnh 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');

Tạo Table2- Tập lệnh 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');

Lưu ý: Ở đây “DHK_SCHEMA” là tên lược đồ, người dùng có thể thay đổi tên lược đồ trong SQL cho phù hợp.

Thiết lập Operator Ví dụ như dưới đây

Operator Truy vấn SQL Đầu ra Sử dụng
UNION CHỌN *
TỪ
(
CHỌN ELEMENT
TỪ DHK_SCHema.TABLE1
UNION
CHỌN ELEMENT
TỪ DHK_SCHema.TABLE2
)
ĐẶT BỞI YẾU TỐ;

Kết quả đầu ra của toán tử tập hợp UNION

Kết hợp Kết quả của hai hoặc nhiều truy vấn không trùng lặp.
ĐOÀN KẾT TẤT CẢ CHỌN *
TỪ
(
CHỌN ELEMENT
TỪ DHK_SCHema.TABLE1
ĐOÀN KẾT TẤT CẢ
CHỌN ELEMENT
TỪ DHK_SCHema.TABLE2
)
ĐẶT BỞI YẾU TỐ;

UNION ALL set operator output

Kết hợp Kết quả của hai hoặc nhiều truy vấn với tất cả các truy vấn trùng lặp.
GIAO NHAU CHỌN *
TỪ
(
CHỌN ELEMENT
TỪ DHK_SCHema.TABLE1
GIAO NHAU
CHỌN ELEMENT
TỪ DHK_SCHema.TABLE2
)
ĐẶT BỞI YẾU TỐ;

Kết quả đầu ra của toán tử INTERSECT

Kết hợp Kết quả của hai hoặc nhiều truy vấn với tất cả các hàng chung.
NGOẠI TRỪ CHỌN *
TỪ
(
CHỌN ELEMENT
TỪ DHK_SCHema.TABLE1
NGOẠI TRỪ
CHỌN ELEMENT
TỪ DHK_SCHema.TABLE2
)
ĐẶT BỞI YẾU TỐ;

NGOẠI TRỪ đầu ra của toán tử thiết lập

Lấy đầu ra từ truy vấn đầu tiên và xóa hàng được chọn bởi truy vấn thứ hai

Thiết lập OperaQuy tắc và yêu cầu của Tor

Các toán tử tập hợp trông đơn giản nhưng lại dễ dàng từ chối các truy vấn, bởi vì chúng so sánh toàn bộ tập kết quả chứ không phải các giá trị riêng lẻ. Có bốn quy tắc chi phối chúng.

  1. Số cột phải khớp nhau. Cả hai câu lệnh SELECT phải trả về cùng số lượng cột. Nếu không khớp, lỗi sẽ xảy ra ngay lập tức và thông báo sẽ nêu tên vị trí chứ không phải tên cột.
  2. Các kiểu dữ liệu phải tương thích với nhau. Cột đầu tiên của truy vấn thứ nhất được so khớp với cột đầu tiên của truy vấn thứ hai, và cứ thế tiếp tục theo vị trí, chứ không phải theo tên. Các kiểu dữ liệu số tương thích được chuyển đổi tự động; cột ký tự so với cột ngày tháng thì không.
  3. Tên cột được lấy từ truy vấn đầu tiên. Bất kể câu lệnh thứ hai gọi các cột của nó là gì thì kết quả đầu ra đều bị bỏ qua, điều này có thể gây ngạc nhiên cho bất kỳ ai lần đầu tiên đọc kết quả của phép UNION.
  4. Lệnh ORDER BY áp dụng cho toàn bộ kết quả. Nó thuộc về phần cuối, sau câu lệnh SELECT cuối cùng, và đó là lý do tại sao các ví dụ trên lại bao bọc câu lệnh UNION trong một câu lệnh SELECT bên ngoài.

Sự khác biệt về hiệu năng giữa UNION và UNION ALL rất đáng chú ý. UNION phải sắp xếp hoặc băm kết quả kết hợp để loại bỏ các phần tử trùng lặp, trong khi UNION ALL chỉ đơn giản là thêm vào. Trong trường hợp không thể có hoặc chấp nhận được các phần tử trùng lặp, UNION ALL sẽ nhanh hơn đáng kể trên các bảng lớn. Các định nghĩa cột được sử dụng trong các bảng này được đề cập trong phần tiếp theo. SAP Các kiểu dữ liệu HANA.

OperaThứ tự ưu tiên trong SAP HANA SQL

Khi nhiều toán tử xuất hiện trong cùng một biểu thức, thứ tự ưu tiên sẽ quyết định toán tử nào được đánh giá trước. Sai sót trong thao tác này sẽ dẫn đến một truy vấn chạy hoàn hảo nhưng trả về các hàng sai, điều này nguy hiểm hơn nhiều so với lỗi cú pháp.

Mã đơn hàng Operaxoắn Phân loại
1 () Dấu ngoặc đơn luôn được đánh giá trước tiên.
2 + – (toán hạng đơn) Phép cộng đơn và phép phủ định
3 * / Nhân và chia
4 + – || Phép cộng, phép trừtracsự nối, sự kết nối
5 = != < > <= >= sự so sánh
6 KHÔNG Phủ định logic
7 phép nối logic
8 OR Phép tuyển logic

Cạm bẫy kinh điển nằm ở hàng 7 và 8. Vì phép toán AND liên kết chặt chẽ hơn phép toán OR, nên điều kiện WHERE region = 'EAST' OR region = 'WEST' AND status = 'OPEN' được đọc là Hướng Đông, hoặc hướng Tây, nơi đó đang mở.Mọi hàng phía đông đều được trả về bất kể trạng thái. Thêm dấu ngoặc đơn xung quanh hai bài kiểm tra vùng sẽ khắc phục được sự cố này.

💡 Mẹo: Hãy đặt dấu ngoặc đơn xung quanh mọi điều kiện kết hợp AND và OR, ngay cả khi thứ tự ưu tiên đã cho ra kết quả mong muốn. Truy vấn sẽ tự giải thích và vẫn giữ nguyên giá trị sau khi được chỉnh sửa bởi nhà phát triển khác.

Cú pháp câu lệnh thông dụng hàng ngày được đề cập trong phần này. SAP HANA SQL hướng dẫn và nền tảng rộng hơn trong SAP Hướng dẫn HANA series.

Câu Hỏi Thường Gặp

UNION ALL. Lệnh này chỉ đơn giản là thêm kết quả vào, trong khi UNION phải loại bỏ thêm các phần tử trùng lặp. Hãy sử dụng UNION ALL bất cứ khi nào kết quả trùng lặp là không thể hoặc chấp nhận được.

Có, SAP HANA tự động chuyển đổi số. Wrapping Việc sử dụng TO_VARCHAR vẫn là cách làm tốt hơn, vì khi đó định dạng sẽ nằm trong tầm kiểm soát của bạn thay vì định dạng mặc định của phiên.

Đúng vậy. AI diễn đạt lại điều kiện kết hợp AND và OR bằng ngôn ngữ đơn giản, điều này ngay lập tức cho thấy liệu nhóm có...ping Nó khớp với ý định ban đầu, sau đó đề xuất các dấu ngoặc đơn để sửa lỗi.

Đúng vậy. Các câu lệnh INTERSECT và EXCEPT thường được viết lại thành một phép nối trong (inner join) hoặc một mệnh đề NOT EXISTS, điều này có thể mang lại hiệu suất tốt hơn. Hãy so sánh kế hoạch thực thi trước khi áp dụng cách viết lại này.

So sánh bất kỳ giá trị nào với NULL sẽ trả về unknown thay vì true hoặc false, do đó hàng đó sẽ bị lọc bỏ. Hãy sử dụng IS NULL và IS NOT NULL thay vì toán tử bằng.

Tóm tắt bài viết này với: