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ể.

  • 🗓️ Các loại ngày giờ: DATE, TIME, SECONDDATE và TIMESTAMP khác nhau ở độ chính xác mà chúng giữ lại.
  • 🔢 Phạm vi số: Các kiểu dữ liệu TINYINT đến BIGINT bao gồm số nguyên, trong khi DECIMAL, SMALLDECIMAL, REAL và DOUBLE xử lý số thập phân.
  • 🔤 Chuỗi ký tự: VARCHAR chứa byte và NVARCHAR chứa ký tự Unicode, cả hai đều giới hạn ở 5000 ký tự.
  • 📦 Đối tượng lớn: Các kiểu dữ liệu BLOB, CLOB, NCLOB, TEXT và BINTEXT lưu trữ dữ liệu có kích thước quá lớn so với một cột thông thường.
  • 🔍 Chức năng tìm kiếm đã được bật: Các kiểu dữ liệu TEXT, BINTEXT và SHORTTEXT hỗ trợ tìm kiếm toàn văn nhưng chỉ trên các bảng lưu trữ theo cột.
  • 🇧🇷 Định danh: Các định danh được phân tách nằm trong dấu ngoặc kép và chấp nhận bất kỳ ký tự nào; các định danh không được phân tách phải bắt đầu bằng một chữ cái.
  • ❝ Quy tắc trích dẫn: Dấu ngoặc đơn dùng để phân định giá trị chuỗi ký tự, còn dấu ngoặc kép dùng để phân định định danh.

SAP Các kiểu dữ liệu HANA

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:

  1. 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.
  2. 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.
  3. Đị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.
  4. 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.

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

VARCHAR đo giới hạn của nó bằng byte, còn NVARCHAR đo bằng ký tự Unicode. Đối với bất kỳ văn bản nào có thể chứa các ký tự không phải ASCII, NVARCHAR là lựa chọn an toàn hơn vì nó sẽ không bị cắt ngắn đột ngột.

Hãy sử dụng SECONDDATE khi độ chính xác đến từng giây là đủ, điều này bao gồm hầu hết các sự kiện kinh doanh. TIMESTAMP thêm phần giây thập phân và tốn nhiều dung lượng lưu trữ hơn trên mỗi hàng của một bảng lớn.

Đúng vậy. Phân tích tệp nguồn sẽ tiết lộ phạm vi giá trị, độ dài và định dạng thực tế, từ đó AI đề xuất kiểu dữ liệu an toàn nhỏ nhất cho mỗi cột thay vì kiểu mặc định quá khổ để phòng ngừa.

Đúng vậy. Việc so sánh độ dài đã khai báo với các giá trị thực tế được lưu trữ sẽ làm nổi bật các cột có thể bị thu nhỏ, điều này rất quan trọng vì mọi cột của bảng HANA đều được lưu giữ trong bộ nhớ.

TEXT, BINTEXT và SHORTTEXT cung cấp các tính năng tìm kiếm văn bản. Cả ba đều chỉ được sử dụng trong các bảng lưu trữ theo cột và không thể được định nghĩa trên bảng lưu trữ theo hàng.

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