Hầu hết các RDBMS chính đều có các chức năng cho phép chúng tôi định dạng số bằng dấu phẩy làm dấu phân tách nhóm hoặc dấu phân tách thập phân.
Một số RDBMS cũng xuất ra các kiểu dữ liệu số nhất định với dấu phẩy ở vị trí thích hợp.
Dưới đây là các ví dụ về định dạng số với dấu phẩy trong một số DBMS phổ biến hơn.
MySQL
Trong MySQL, chúng ta có thể sử dụng FORMAT()
hàm định dạng số bằng dấu phẩy:
SELECT FORMAT(123456.789, 2);
Kết quả:
123.456,79
Không cần chỉ định vị trí của dấu phẩy. Hàm biết vị trí cần đặt chúng.
Hàm này cũng chấp nhận đối số thứ ba để chỉ định ngôn ngữ. Không phải tất cả ngôn ngữ đều sử dụng dấu phẩy làm dấu phân tách nhóm - một số ngôn ngữ sử dụng dấu phẩy làm dấu phân tách thập phân. FORMAT()
chức năng đủ thông minh để biết sử dụng quy ước nào.
Ví dụ:
SELECT FORMAT(123456.789, 2, 'de_DE');
Kết quả:
123.456,79
Oracle
Trong Oracle, chúng ta có thể sử dụng TO_CHAR()
hàm định dạng một số bằng dấu phẩy:
SELECT TO_CHAR(12345, 'fm99G999D00')
FROM DUAL;
Kết quả:
12.345,00
G
phần tử định dạng là trình giữ chỗ cho dấu phân tách nhóm và D
dành cho dấu phân tách thập phân.
Trong trường hợp này, dấu phân tách nhóm xuất ra dấu phẩy và ký tự thập phân xuất ra dấu chấm. Đó là vì NLS_TERRITORY
của phiên hiện tại của tôi tham số được đặt thành Australia
.
Đúng là chúng tôi chỉ có thể sử dụng dấu phẩy được mã hóa cứng thay vì G
phần tử định dạng, nhưng điều đó giả định rằng dấu phân tách nhóm là dấu phẩy. Không phải tất cả ngôn ngữ đều sử dụng dấu phẩy làm dấu phân tách nhóm.
Xem Cách định dạng số bằng dấu phẩy trong Oracle để biết thêm thông tin và ví dụ về định dạng số bằng dấu phẩy trong Oracle.
Máy chủ SQL
Trong SQL Server, chúng ta có thể sử dụng FORMAT()
hàm định dạng số bằng dấu phẩy. Hàm này chấp nhận số và một chuỗi định dạng:
SELECT
FORMAT(123456.789, 'N') AS "Number",
FORMAT(123456.789, 'P') AS "Percent",
FORMAT(123456.789, 'C') AS "Currency";
Kết quả:
+ ------------ + ---------------- + ------------- + | Số | Phần trăm | Tiền tệ || ------------ + ---------------- + ------------- || 123.456,79 | 12.345.678,90% | 123.456,79 USD | + ------------ + ---------------- + ------------- +Hàm cũng chấp nhận đối số “văn hóa” tùy chọn để chỉ định ngôn ngữ sử dụng cho đầu ra được định dạng.
Bạn cũng có thể tạo chuỗi định dạng tùy chỉnh của riêng mình để có thể xác định chính xác vị trí của mỗi dấu phân tách hàng nghìn và dấu phân cách thập phân.
Xem Cách định dạng số bằng dấu phẩy trong SQL Server để biết ví dụ.
PostgreSQL
PostgreSQL có
TO_CHAR()
hàm hoạt động giống như hàm cùng tên của Oracle:SELECT TO_CHAR(123456.78, 'fm999G999D99');
Kết quả:
123.456,78Hàm này nhận biết ngôn ngữ, vì vậy nó sẽ hiển thị nhóm và dấu phân tách thập phân thích hợp cho ngôn ngữ.
PostgreSQL cũng có
money
kiểu dữ liệu, được xuất ở định dạng nhận biết ngôn ngữ. Xem Định dạng số có dấu phẩy trong PostgreSQL để làm ví dụ.SQLite
SQLite bị hạn chế hơn một chút khi so sánh với hầu hết các DBMS khác. Tuy nhiên, nó có
printf()
cho phép chúng ta định dạng số theo một chuỗi định dạng:SELECT printf("%,d", 123456789);
Kết quả:
123.456.789Điều này hoạt động tốt với số nguyên, nhưng số thực / dấu phẩy động đòi hỏi nhiều công việc hơn một chút. Xem Định dạng số bằng dấu phẩy trong SQLite để biết thêm về điều này.
Cập nhật :SQLite 3.38.0 (phát hành ngày 22 tháng 2 năm 2022) được đổi tên thành
printf()
hàm thànhformat()
.printf()
gốc tên được giữ lại làm bí danh để tương thích ngược.Vì vậy, ví dụ trên có thể được thay đổi thành thế này:
SELECT format("%,d", 123456789);
Kết quả:
123.456.789MariaDB
Trong MariaDB, chúng ta có thể sử dụng
FORMAT()
hàm định dạng một số bằng dấu phẩy:SELECT FORMAT(123456.789, 2);
Kết quả:
123.456,79Như với hàm MySQL cùng tên, không cần chỉ định vị trí của dấu phẩy. Hàm biết nơi đặt chúng.