Hầu hết các RDBMS chính cung cấp các cách để chúng ta định dạng số bằng SQL. Một số chỉ cung cấp các khả năng định dạng cơ bản, trong khi một số khác thì nâng cao hơn.
Dưới đây là các ví dụ về định dạng một số trong một số RDBMS phổ biến hơn.
MySQL
Trong MySQL, chúng ta có thể sử dụng FORMAT()
chức năng định dạng một số thành một định dạng cụ thể. Hàm này chấp nhận ba tham số; số, số vị trí thập phân và ngôn ngữ tùy chọn:
SELECT FORMAT(123456.789, 2);
Kết quả:
123.456,79
Như đã đề cập, bạn cũng có thể chuyển đối số thứ ba để chỉ định ngôn ngữ sử dụng cho mẫu định dạng. Xem Cách định dạng số trong MySQL để làm ví dụ.
Để định dạng số dưới dạng đơn vị tiền tệ, hãy xem Cách định dạng số dưới dạng đơn vị tiền tệ trong MySQL.
Oracle
Cơ sở dữ liệu Oracle cung cấp cho chúng ta một số tùy chọn khi định dạng số.
Đặc biệt, TO_CHAR(number)
chức năng cho phép chúng tôi định dạng một số dựa trên mô hình định dạng tùy chỉnh của riêng chúng tôi.
Ví dụ:
SELECT
TO_CHAR(12345, 'fmL99G999D00')
FROM DUAL;
Kết quả:
$ 12.345,00
Đối số đầu tiên là số để định dạng và đối số thứ hai là mô hình định dạng. Mô hình định dạng bao gồm một hoặc nhiều phần tử định dạng, mỗi phần tử đại diện cho một phần tử khác nhau trong đầu ra được định dạng.
Trong ví dụ trên, chúng tôi sử dụng 9
ký tự đại diện cho từng chữ số và 0
ký tự để xuất ra chữ số hoặc số 0 (tùy thuộc vào việc có hay không một chữ số tồn tại ở vị trí đó). Chúng tôi cũng sử dụng G
cho dấu phân tách nhóm nhận biết ngôn ngữ và D
cho dấu phân tách thập phân nhận biết ngôn ngữ. fm
phần tử ngăn chặn bất kỳ phần đệm nào ở đầu hoặc cuối có thể được áp dụng cho kết quả.
Đây là danh sách đầy đủ các phần tử định dạng mà bạn có thể sử dụng cho mô hình định dạng của mình khi định dạng số.
Có nhiều cách khác để định dạng số trong Oracle. Ví dụ: LPAD()
có thể được sử dụng để chuyển đổi số thành một chuỗi và định dạng chúng chính xác theo ý muốn của bạn. Các hàm như CAST()
cũng có thể ảnh hưởng đến cách một số được định dạng, tùy thuộc vào loại dữ liệu mà nó đang được truyền.
Xem Cách định dạng số trong Oracle để biết thêm chi tiết và các ví dụ.
PostgreSQL
Giống như Oracle, PostgreSQL cũng có TO_CHAR()
và nó hoạt động theo cùng một cách:
SELECT TO_CHAR(923, 'fm000G000th');
Kết quả:
000,923 thứ
Ở đây, tôi đã sử dụng 0
phần tử định dạng để xuất ra các số 0 ở đầu, ngay cả khi số ban đầu không có bất kỳ chữ số nào ở vị trí đó. Trong trường hợp này, tôi đã sử dụng th
phần tử định dạng để chuyển đổi số thành thứ tự của nó. Tôi cũng đã sử dụng G
cho dấu phân tách nhóm nhận biết ngôn ngữ.
Dưới đây là danh sách các mẫu mẫu mà chuỗi định dạng có thể bao gồm khi định dạng số, cũng như các công cụ sửa đổi định dạng.
Một cách khác để định dạng một số trong PostgreSQL là chuyển nó thành money
loại dữ liệu. Các số được lưu trữ dưới dạng money
loại được xuất ở định dạng nhận biết ngôn ngữ, với ký hiệu tiền tệ thích hợp, dấu phân tách nhóm, dấu phân cách thập phân, v.v.:
SELECT CAST(10000 as money);
Kết quả:
$ 10.000,00
Xem Cách định dạng số trong PostgreSQL để biết thêm ví dụ về định dạng số trong PostgreSQL.
Máy chủ SQL
SQL Server có FORMAT()
, hoạt động giống như TO_CHAR()
của Oracle và PostgreSQL , trong đó nó cho phép bạn định dạng số dựa trên 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 | + ------------ + ---------------- + ------------- +Ví dụ này minh họa ba chỉ định định dạng tiêu chuẩn - mỗi định dạng xuất ra số ở một định dạng cụ thể.
Chúng tôi cũng có thể sử dụng các công cụ chỉ định định dạng tùy chỉnh của riêng mình, cho phép chúng tôi tạo ra định dạng của riêng mình, trong trường hợp định dạng chuẩn không phải là những gì chúng tôi muốn.
Bạn cũng có thể thực hiện những việc như định dạng số theo hệ thập lục phân tương đương hoặc sử dụng ký hiệu hàm mũ, v.v.
Và bạn có thể chuyển đối số thứ ba tùy chọn để chỉ định ngôn ngữ để định dạng số (nó định dạng số bằng cách sử dụng các quy ước của ngôn ngữ đó).
Xem Cách định dạng số trong SQL Server để biết thêm ví dụ.
MariaDB
Giống như MySQL, MariaDB có a
FORMAT()
, cung cấp định dạng số cơ bản.Dưới đây là một ví dụ về việc sử dụng hàm này để định dạng một số bằng các ngôn ngữ khác nhau:
SELECT FORMAT(123456.789, 2, 'ta_IN') AS "Tamil, India", FORMAT(123456.789, 2, 'de_DE') AS "German, Germany", FORMAT(123456.789, 2, 'zh_HK') AS "Chinese, Hong Kong";
Kết quả:
+ -------------- + ----------------- + ------------- ------- + | Tamil, Ấn Độ | Đức, Đức | Tiếng Trung, Hồng Kông | + -------------- + ----------------- + ----------- --------- + | 1.23.456,79 | 123.456,79 | 123.456,79 | + -------------- + ----------------- + -------------- ------ +Xem Cách định dạng số trong MariaDB để biết thêm ví dụ.
SQLite
SQLite bị hạn chế hơn các DBMS khác khi nói đến định dạng số. Tuy nhiên, có nhiều cách để có được một số định dạng số cơ bản:
SELECT PRINTF("%,d", 123456789);
Kết quả:
123.456.789
PRINTF()
hàm có thể xuất dấu phân cách nhóm cho số nguyên, nhưng không cho số thực / dấu phẩy động. Để định dạng số thực / dấu phẩy động, bạn cần phải làm nhiều việc hơn một chút. Xem Định dạng số bằng dấu phẩy trong SQLite để biết ví dụ về ý tôi.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 sau:
SELECT FORMAT("%,d", 123456789);
Kết quả:
123.456.789