Trong PostgreSQL, chúng ta có thể sử dụng TO_CHAR()
chức năng để định dạng số theo một định dạng nhất định. Điều này bao gồm định dạng các số có dấu phẩy ở vị trí thích hợp.
PostgreSQL cũng có money
kiểu dữ liệu, xuất ra giá trị bằng ngôn ngữ hiện tại. Điều này có thể bao gồm dấu phẩy ở vị trí thích hợp, dựa trên ngôn ngữ đang được sử dụng.
TO_CHAR()
Chức năng
Đây là một ví dụ về việc sử dụng TO_CHAR()
hàm xuất một số có dấu phẩy:
SELECT TO_CHAR(123456.78, 'fm999G999D99');
Kết quả:
123,456.78
Đối số thứ hai bao gồm một loạt các mẫu mẫu số xác định cách đối số đầu tiên được định dạng.
Ở đây, tôi đã sử dụng G
mẫu mẫu cho dấu phân tách nhóm nhận biết ngôn ngữ (còn được gọi là "dấu phân cách hàng nghìn"). Tôi có thể đã sử dụng dấu phẩy (,
), nhưng điều đó sẽ không nhận biết được ngôn ngữ.
Tôi cũng đã sử dụng D
mẫu mẫu cho dấu phân tách thập phân nhận biết ngôn ngữ.
Trong trường hợp này, tôi cũng đã sử dụng fm
(là viết tắt của “Chế độ điền”) để loại bỏ mọi số 0 ở cuối và khoảng trống ở đầu có thể đã được tự động áp dụng cho kết quả.
9
mẫu mẫu dành cho mỗi chữ số. Bạn có thể sử dụng 0
thay vào đó nếu bạn muốn bao gồm các số 0 ở đầu.
Vì G
và D
các mẫu mẫu nhận biết được ngôn ngữ, chúng có thể tạo ra ký tự thích hợp cho nhóm và dấu phân tách thập phân.
Dưới đây là một ví dụ để chứng minh ý tôi muốn nói:
SET lc_numeric = 'fr_FR';
SELECT TO_CHAR(123456.78, 'fm999G999D99');
Kết quả:
123,456.78
Bây giờ, dấu phân tách nhóm được biểu thị bằng dấu chấm / dấu chấm đầy đủ và dấu phân tách thập phân được biểu thị bằng dấu phẩy. Điều này là do tôi đã thay đổi lc_numeric
biến để sử dụng fr_FR
(đối với Pháp), và theo thông lệ của Pháp, dấu phân tách nhóm và dấu thập phân được biểu diễn theo cách này.
Các ngôn ngữ khác nhau có các quy ước khác nhau để định dạng số và G
và D
công cụ sửa đổi định dạng có thể xác định ký tự nào sẽ sử dụng cho dấu phân tách nhóm và dấu phân tách thập phân.
money
Loại dữ liệu
PostgreSQL có money
kiểu dữ liệu xuất ra các giá trị của nó được định dạng theo kiểu nhận biết ngôn ngữ.
Ví dụ:
SET lc_monetary = 'en_US';
SELECT CAST(123456.78 AS money);
Kết quả:
$123,456.78
Bây giờ chúng ta hãy thay đổi lc_monetary
và xem điều này ảnh hưởng như thế nào đến kết quả:
SET lc_monetary = 'fr_FR';
SELECT CAST(123456.78 AS money);
Kết quả:
123 456,78 Eu
Trong trường hợp này, dấu phân tách nhóm được biểu thị bằng dấu cách và dấu phân tách thập phân là dấu phẩy.