Khi làm việc với Postgres, bạn có thể sử dụng to_char()
hàm để xuất các số ở một định dạng nhất định.
Cách nó hoạt động là bạn cung cấp hai đối số. Đối số đầu tiên là số được định dạng. Đối số thứ hai xác định cách nó được định dạng.
Giá trị trả về là văn bản .
Tùy thuộc vào yêu cầu của bạn, bạn có thể muốn chuyển đổi số sang kiểu dữ liệu thích hợp, ví dụ:sử dụng cast()
chức năng.
Dưới đây là ví dụ về cả hai phương pháp.
Ví dụ
Đây là một ví dụ cơ bản để chứng minh.
SELECT to_char(10, '99.99');
Kết quả:
10.00
9
s thực sự có ý nghĩa đặc biệt trong bối cảnh này. Ký tự này là một trong những mẫu mẫu hợp lệ mà chuỗi định dạng của bạn có thể bao gồm khi định dạng số.
Trong trường hợp của 9
, nó chỉ định một vị trí chữ số, nhưng nếu nó là số 0 ở đầu thì nó sẽ được thay thế bằng khoảng trắng, trong khi nếu nó là 0 ở cuối và chế độ điền được chỉ định thì nó sẽ bị xóa.
Nếu tôi xóa phần chữ số thập phân và phần giây phân số, tôi nhận được một kết quả khác.
SELECT to_char(10, '99');
Kết quả:
10
Thả Zeros dẫn đầu
Bạn có thể thay thế 9
với 0
nếu bạn muốn loại bỏ các số không ở đầu và cuối, ngay cả khi không quan trọng.
Dưới đây là một ví dụ chứng minh sự khác biệt giữa hai phương pháp này.
SELECT
to_char(0010, '9999') AS "9999",
to_char(0010, '0000') AS "0000";
Kết quả:
9999 | 0000 -------+------- 10 | 0010
Mẫu Mẫu
Như đã thấy trong các ví dụ trước, chuỗi định dạng bao gồm một hoặc nhiều mẫu mẫu.
Ví dụ:9999
là một chuỗi định dạng bao gồm bốn mẫu mẫu - mỗi mẫu là 9
.
Vị trí thập phân là một mẫu mẫu khác.
Tôi có thể đã sử dụng một D
thay vì vị trí thập phân. Điều đó sử dụng ngôn ngữ hiện tại cho định dạng thực tế.
SELECT
to_char(10, '99.99') AS "99.99",
to_char(10, '99D99') AS "99D99";
Kết quả:
99.99 | 99D99 --------+-------- 10.00 | 10.00
Để có danh sách đầy đủ các mẫu và công cụ sửa đổi mẫu, hãy xem Mẫu &công cụ sửa đổi mẫu cho Định dạng số trong Postgres.
Công cụ sửa đổi mẫu mẫu
Ngoài ra còn có một vài công cụ sửa đổi có thể được sử dụng cùng với mẫu mẫu. Những điều này thay đổi cách định dạng đầu ra, tùy thuộc vào công cụ sửa đổi được sử dụng.
Cụ thể, có ba công cụ sửa đổi có thể được sử dụng với định dạng số.
Modifier | Mô tả |
---|---|
FM tiền tố | chế độ điền (loại bỏ các số 0 ở cuối và khoảng trống đệm) |
TH hậu tố | hậu tố số thứ tự viết hoa |
th hậu tố | hậu tố số thứ tự viết thường |
Lưu ý rằng cái đầu tiên được thêm làm tiền tố cho mẫu mẫu và hai cái khác được thêm dưới dạng hậu tố.
Số thứ tự
Một yêu cầu phổ biến là chuyển một số thành thứ tự của nó. Chúng ta có thể sử dụng TH
hoặc th
đối với điều đó, tùy thuộc vào việc chúng ta muốn hậu tố là chữ hoa hay chữ thường.
Đây là một ví dụ.
SELECT to_char(03, 'FM99th');
Kết quả:
3rd
Trong trường hợp này, tôi cũng đã sử dụng FM
để loại bỏ bất kỳ khoảng trống và số không ở cuối.
Dưới đây là so sánh giữa việc sử dụng FM
và bỏ qua nó:
SELECT
to_char(03, '99th') AS "99th",
to_char(03, 'FM99th') AS "FM99th";
Kết quả:
99th | FM99th -------+-------- 3rd | 3rd
Nếu bạn nhìn kỹ, cột đầu tiên có khoảng trống ở đầu, trong khi cột thứ hai thì không.
Tiền tệ
Một yêu cầu phổ biến khác là xuất một số bằng một đơn vị tiền tệ nhất định.
Trong trường hợp này, chúng ta có thể sử dụng L
mẫu để hiển thị ký hiệu tiền tệ nhận biết ngôn ngữ.
SELECT to_char(03, 'LFM99D00');
Kết quả:
$3.00
Số đã ký
Ngoài ra còn có các mẫu mẫu cho các số có chữ ký.
Đây là một ví dụ.
SELECT to_char(27, 'S99');
Kết quả:
+27
Ở đây, tôi đã sử dụng S
để thêm dấu hiệu nhận biết ngôn ngữ được gắn vào số.
Trong trường hợp này, đó là một số dương. Đây là một ví dụ khác sử dụng giá trị âm.
SELECT to_char(-27, 'S99');
Kết quả:
-27
Có một số mẫu mẫu khác có thể được sử dụng cho các số có dấu.
Ví dụ, hãy xem Thêm dấu cộng / dấu trừ vào một số trong Postgres.
Và như đã đề cập, hãy xem Mẫu &Công cụ sửa đổi mẫu cho Định dạng số trong Postgres để biết danh sách đầy đủ các công cụ sửa đổi mẫu mà bạn có thể sử dụng khi định dạng số.
Loại dữ liệu
Như đã đề cập, to_char()
hàm xuất kết quả dưới dạng văn bản .
Tùy thuộc vào yêu cầu của bạn, bạn có thể thấy tốt hơn khi chuyển đổi số sang loại dữ liệu thích hợp hơn.
Dưới đây là một ví dụ chuyển đổi một số thành tiền dữ liệu loại.
SELECT cast(10 as money);
Kết quả:
$10.00