Nếu bạn đang định dạng một số trong PostgreSQL và bạn muốn thay đổi ngôn ngữ để sử dụng đúng nhóm và dấu phân tách thập phân, thì đây là cách bạn có thể thực hiện điều đó.
Có hai biến hệ thống được quan tâm:
lc_monetary | Đặt ngôn ngữ sử dụng để định dạng số tiền. |
lc_numeric | Đặt ngôn ngữ sử dụng để định dạng số. |
Chúng có thể được đặt bằng SET
tuyên bố.
Ví dụ:
SET lc_numeric = 'en_US';
Kết quả:
SET
Sau khi đặt điều đó, các hàm như TO_CHAR()
sẽ định dạng số theo en_US
định dạng.
Ví dụ
Dưới đây là một số ví dụ chứng minh rằng biến này có thể ảnh hưởng đến kết quả như thế nào:
lc_monetary
Biến
Dưới đây là một ví dụ về cách đặt lc_monetary
biến:
SET lc_monetary = 'en_US';
SELECT CAST(123456.789 AS money);
Kết quả:
$123,456.79
Và ở đây nó đang sử dụng một ngôn ngữ khác:
SET lc_monetary = 'de_DE';
SELECT CAST(123456.789 AS money);
Kết quả:
Eu123.456,79
lc_numeric
Biến
Đây là ví dụ về cách đặt lc_numeric
, sau đó định dạng một số bằng TO_CHAR()
chức năng:
SET lc_numeric = 'en_US';
SELECT TO_CHAR(123456.789, 'fm999G999D99');
Kết quả:
123,456.79
Và ở đây nó đang sử dụng một ngôn ngữ khác:
SET lc_numeric = 'de_DE';
SELECT TO_CHAR(123456.789, 'fm999G999D99');
Kết quả:
123,456.79
Kiểm tra Cài đặt Hiện tại
Bạn có thể kiểm tra cài đặt hiện tại của mình bằng SHOW
lệnh.
Ví dụ:
SHOW lc_monetary;
Kết quả:
en_US
Và:
SHOW lc_numeric;
Kết quả:
de_DE
Đặt lại Trở về Giá trị Mặc định
Bạn có thể sử dụng cách sau để đặt từng biến trở lại cài đặt mặc định của nó:
SET lc_monetary TO DEFAULT;
SHOW lc_monetary;
Kết quả:
en_US.UTF-8
Và cho lc_numeric
:
SET lc_numeric TO DEFAULT;
SHOW lc_numeric;
Kết quả:
en_US.UTF-8
Các ngôn ngữ có sẵn trên hệ thống của bạn và tên của chúng phụ thuộc vào những gì được cung cấp bởi nhà cung cấp hệ điều hành và những gì đã được cài đặt. Xem tài liệu của PostgreSQL về hỗ trợ ngôn ngữ để biết thêm thông tin.