SAP Các kiểu dữ liệu HANA: Số, Chuỗi ký tự, Số thập phân
⚡ Tóm tắt thông minh
SAP Các kiểu dữ liệu HANA xác định những gì mỗi cột có thể lưu trữ, bao gồm ngày giờ, số, boolean, chuỗi ký tự, nhị phân, đối tượng lớn và phân loại đa giá trị, mỗi kiểu dữ liệu đều có bản đồ riêng.ping đến một loại lưu trữ cột cụ thể.

Với SAP Hướng dẫn về các kiểu dữ liệu HANA, chúng ta sẽ tìm hiểu:
1) SAP Các kiểu dữ liệu HANA – SAP Các kiểu dữ liệu HANA bao gồm Ngày giờ, kiểu dữ liệu Số, Boolean, Chuỗi ký tự, kiểu dữ liệu nhị phân, v.v.
2) SAP Mã định danh HANA – Mã định danh được phân tách và Mã định danh không được phân tách
Các kiểu dữ liệu trong SAP HANNA
In SAP Cơ sở dữ liệu HANA, SQL Các kiểu dữ liệu như sau:
| phân loại | Phân loại phụ | Kiểu dữ liệu SQL | Loại cửa hàng cột | Định dạng mặc định |
|---|---|---|---|---|
| Ngày Thời gian Loại | Ngày | NGÀY | CS_DAYDATE | 'YYYY-MM-DD' |
| Thời gian | THỜI GIAN | CS_SECONDTIME | 'HH24:MI:SS' | |
| Ngày thứ hai | NGÀY THỨ HAI | CS_LONGDATE | 'YYYY-MM-DD HH24:MI:SS' | |
| Dấu thời gian | THỜI GIAN | CS_SECONDDATE | 'YYYY-MM-DD HH24:MI:SS.FFn' | |
| Các loại số | Số nguyên nhỏ | TINYINT | CS_INT | Số nguyên không dấu 8 bit, phạm vi từ 0 đến 255. |
| Số nguyên nhỏ | NHỎ | CS_INT | Số nguyên có dấu 16 bit, phạm vi từ -32,768 đến 32,767 | |
| Số nguyên | số nguyên | CS_INT | Số nguyên có dấu 32 bit, phạm vi từ -2,147,483,648 đến 2,147,483,647 | |
| Số nguyên lớn | LỚN | CS_FIXED(18,0) | Số nguyên có dấu 64 bit, phạm vi từ -9,223,372,036,854,775,808 đến 9,223,372,036,854,775,807 | |
| Số Thập Phân | thập phân(p,s) p-Chính xác s-tỷ lệ |
CS_FIXED(ps,s) | Độ chính xác p có thể dao động từ 1 đến 38. Thang đo s có thể nằm trong khoảng từ 0 đến p cho SAP Kiểu dữ liệu thập phân HANA. Nếu độ chính xác và tỷ lệ không được chỉ định, DECIMAL sẽ trở thành số thập phân có dấu phẩy động. |
|
| Thập phân nhỏ | NHỎ | CS_SDFLOAT | Đó là số thập phân có dấu phẩy động. Độ chính xác và tỷ lệ phải nằm trong phạm vi 1~16 cho độ chính xác và -369~368 cho tỷ lệ, tùy thuộc vào giá trị được lưu trữ. SMALLDECIMAL chỉ được hỗ trợ cho Bảng lưu trữ cột. | |
| Số thực | CÓ THẬT | CS_FLOAT | số dấu phẩy động 32 bit có độ chính xác đơn | |
| Double Con số | GẤP ĐÔI | CS_ĐÔI | một số dấu phẩy động 64 bit có độ chính xác kép | |
| Phao nổi (Float) | PHỔI(n) | CS_ĐÔI | Đó là số thực 32 bit hoặc 64 bit. Trong đó n chỉ định số bit và nằm trong khoảng từ 1 đến 53. | |
| Boolean | Boolean | BOOLESE | CS_INT | ĐÚNG, SAI và KHÔNG XÁC ĐỊNH (NULL). |
| Chuỗi ký tự | Chuỗi ký tự có độ dài thay đổi | VARCHAR (n) | CS_STRING | Kiểu dữ liệu độ dài chuỗi HANA này là một chuỗi ký tự có độ dài thay đổi, trong đó 'n' chỉ định độ dài tối đa tính bằng byte và đây là một số nguyên nằm giữa 1 và 5000. |
| Ký tự Unicode có độ dài thay đổi | NVARCHAR(n) | CS_STRING | Chuỗi bộ ký tự Unicode có độ dài thay đổi, trong đó cho biết độ dài tối đa tính bằng ký tự và là số nguyên từ 1 đến 5000 | |
| Ký tự số | CHỮ ALPHANUM(n) | CS_ALPHANUM | Các ký tự chữ và số có độ dài thay đổi, trong đó n biểu thị độ dài tối đa và là số nguyên trong khoảng từ 1 đến 127 | |
| văn bản ngắn | VĂN BẢN NGẮN(n) | CS_STRING | Đây là kiểu chuỗi ký tự có độ dài thay đổi, cung cấp các tính năng tìm kiếm văn bản và tìm kiếm chuỗi. Kiểu dữ liệu này có thể được định nghĩa cho các bảng lưu trữ theo cột, nhưng không thể định nghĩa cho các bảng lưu trữ theo hàng. | |
| Các loại nhị phân | Văn bản nhị phân | BIẾN THỂ(n) | CS_RAW | Lưu trữ dữ liệu nhị phân có độ dài tối đa được chỉ định theo byte, trong đó n biểu thị độ dài tối đa và là số nguyên từ 1 đến 5000. |
| Các loại LOB (Loại đối tượng lớn) | LOB nhị phân | BÃI | CS_RAW | Số lượng lớn dữ liệu nhị phân |
| LOB nhân vật | CLOB | CS_STRING | Dữ liệu ký tự ASCII | |
| LOB ký tự Unicode | NCLOB | CS_STRING | Đối tượng ký tự Unicode lớn | |
| TEXT | TEXT | CS_STRING | Kiểu dữ liệu TEXT cung cấp các tính năng tìm kiếm văn bản. Kiểu dữ liệu này có thể được xác định cho các bảng lưu trữ cột, nhưng không được xác định cho các bảng lưu trữ hàng. | |
| Dữ liệu văn bản nhị phân | BINTEXT | CS_STRING | Kiểu dữ liệu BINTEXT tương tự như kiểu dữ liệu TEXT và do đó hỗ trợ các tính năng tìm kiếm văn bản, nhưng có thể chèn dữ liệu nhị phân. Kiểu dữ liệu này có thể được xác định cho bảng cột nhưng không thể xác định cho bảng hàng. | |
| Các loại đa giá trị | Mảng | MẢNG | Nó lưu trữ các tập hợp các giá trị có cùng kiểu dữ liệu trong đó mỗi phần tử có liên quan chính xác với một vị trí. Mảng có thể chứa các giá trị NULL khi không có giá trị. |
Lựa chọn đúng SAP Kiểu dữ liệu HANA
Bảng trên liệt kê những gì hiện có. Việc lựa chọn kỹ càng sẽ quan trọng hơn trong... SAP HANA có nhiều ưu điểm hơn so với cơ sở dữ liệu dựa trên đĩa, vì mỗi cột đều nằm trong bộ nhớ và kiểu dữ liệu quá lớn sẽ tiêu tốn tài nguyên khan hiếm trên mỗi hàng.
Hầu hết các quyết định đều bao gồm bốn nguyên tắc sau:
- Chọn kiểu dữ liệu số nhỏ nhất phù hợp. Một cờ trạng thái với năm giá trị khả dĩ cần kiểu dữ liệu TINYINT, chứ không phải INTEGER. Trên một bảng có hàng tỷ dòng, sự khác biệt này được đo bằng gigabyte bộ nhớ.
- Không bao giờ cất giữ tiền trong các loại tiền REAL hoặc DOUBLE. Số thực dấu phẩy động không thể biểu diễn chính xác các phân số thập phân, do đó tổng số sẽ bị sai lệch một vài phần nhỏ của đơn vị tiền tệ. Hãy sử dụng kiểu dữ liệu DECIMAL với độ chính xác và tỷ lệ được chỉ định rõ ràng.
- Nên ưu tiên NVARCHAR hơn VARCHAR. VARCHAR đếm byte còn NVARCHAR đếm ký tự, vì vậy bất kỳ văn bản nào không phải ASCII sẽ bị cắt ngắn một cách bất ngờ trong VARCHAR. Hiện đại SAP Các phiên bản HANA xử lý VARCHAR như NVARCHAR chính vì lý do này.
- Đảm bảo độ chính xác của ngày tháng phù hợp với yêu cầu. DATE dùng cho ngày trong tuần, SECONDDATE dùng khi thời gian trong ngày quan trọng, và TIMESTAMP chỉ dùng khi cần độ chính xác dưới giây. Mỗi bước tăng giá trị sẽ tốn dung lượng lưu trữ trên mỗi hàng.
Các kiểu dữ liệu lớn cần được đặc biệt lưu ý. Cột BLOB hoặc NCLOB tiện lợi nhưng nặng nề, và tìm kiếm văn bản trên TEXT hoặc SHORTTEXT chỉ hoạt động trên các bảng lưu trữ theo cột, do đó lựa chọn lưu trữ và lựa chọn kiểu dữ liệu có liên quan mật thiết với nhau. Các tùy chọn lưu trữ được đề cập trong phần tiếp theo. SAP HANA SQL hướng dẫn.
SAP Mã định danh HANA
Các định danh được sử dụng để thể hiện tên trong SQL câu lệnh (ví dụ: tên bảng, tên dạng xem, tên cột, tên chỉ mục, tên từ đồng nghĩa, tên thủ tục, tên hàm, v.v.)
Có hai loại định danh trong SAP HANNA: Số nhận dạng được phân tách và số nhận dạng không được phân tách.
- Số nhận dạng được phân cách – Nó được đặt trong dấu phân cách, Double Trích dẫn “”. Mã định danh có thể chứa bất kỳ ký tự nào kể cả ký tự đặc biệt.
- Số nhận dạng không giới hạn – Các mã định danh không giới hạn (tên bảng, tên cột) phải bắt đầu bằng một chữ cái và không được chứa bất kỳ ký hiệu nào ngoài chữ số hoặc dấu gạch dưới '_'.
Có hai loại Dấu ngoặc kép để phân cách như dưới đây-
- Dấu ngoặc đơn (' ') – Dùng để phân cách chuỗi.
- Double Dấu ngoặc kép (“”)– Nó được sử dụng để phân định các định danh.
⚠️ Cảnh báo: Một định danh không có dấu ngoặc kép sẽ được chuyển đổi thành chữ hoa khi đối tượng được tạo. Việc tạo một bảng có tên là employee và sau đó chọn dữ liệu từ bảng “employee” ở dạng chữ thường sẽ thất bại, vì tên được lưu trữ là EMPLOYEE. Hoặc là hoàn toàn tránh sử dụng dấu ngoặc kép, hoặc sử dụng chúng một cách nhất quán.
Chuyển đổi kiểu dữ liệu và các lỗi thường gặp
SAP HANA tự động chuyển đổi giữa các kiểu dữ liệu tương thích, nhưng việc chuyển đổi ngầm định là nguồn gốc âm thầm của các kết quả sai và truy vấn chậm. Việc chuyển đổi tường minh làm cho ý định này trở nên rõ ràng.
Có hai hàm thực hiện công việc này. Hàm CAST chuyển đổi giá trị sang kiểu dữ liệu được đặt tên, và các hàm TO_DATE, TO_VARCHAR, TO_DECIMAL cùng các hàm tương tự sẽ chuyển đổi với một chuỗi định dạng tùy chọn.
-- 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;
Bốn lỗi sau đây là nguyên nhân chính gây ra hầu hết các vấn đề chuyển đổi:
- Tràn số. Việc chèn 40000 vào kiểu dữ liệu SMALLINT thất bại vì phạm vi có dấu dừng ở 32,767. Thông báo lỗi nêu tên cột chứ không phải giá trị, vì vậy hãy kiểm tra định nghĩa trước.
- Cắt ngắn chuỗi ký tự. Việc tải văn bản dài hơn độ dài đã khai báo sẽ gây ra lỗi thay vì tự động cắt bớt. Đếm số ký tự so với NVARCHAR và số byte so với VARCHAR.
- Định dạng ngày không hợp lệ. Việc truyền chuỗi không đúng định dạng cho hàm TO_DATE sẽ gây lỗi. Luôn cung cấp mặt nạ định dạng thay vì dựa vào định dạng mặc định của phiên.
- Chuyển đổi ngầm định trong mệnh đề WHERE. Việc so sánh một cột ký tự với một số sẽ buộc phải chuyển đổi trên mỗi hàng, điều này cản trở việc lọc hiệu quả. Thay vào đó, hãy chuyển đổi hằng số.
Các ký hiệu so sánh được sử dụng trong các bộ lọc này được đề cập trong phần tiếp theo. SAP Người vận hành HANAvà nền tảng rộng lớn hơn trong SAP Hướng dẫn HANA series.
