Bắt đầu từ SQL Server 2012, bạn có thể định dạng kiểu số bằng T-SQL FORMAT()
hàm số. Hàm này chấp nhận ba đối số; số, định dạng và đối số "văn hóa" tùy chọn.
Nó trả về một chuỗi được định dạng kiểu nvarchar .
Định dạng được cung cấp dưới dạng chuỗi định dạng. Chuỗi định dạng xác định cách định dạng đầu ra.
Đây là một ví dụ:
SELECT FORMAT(1, 'N');
Kết quả:
1.00
Trong trường hợp này, tôi đã sử dụng N
như đối số thứ hai. Đây là định dạng số tiêu chuẩn cho Số. Bộ định dạng cụ thể này (N
) dẫn đến kết quả đầu ra được định dạng với các chữ số tích phân và thập phân, dấu phân cách nhóm và dấu phân cách thập phân có dấu âm tùy chọn. Đối số này không phân biệt chữ hoa chữ thường, vì vậy N
hoặc n
ổn.
Vị trí thập phân
Đây là một ví dụ khác, lần này sử dụng N1
để xác định rằng chúng tôi chỉ muốn một chữ số thập phân:
SELECT FORMAT(1, 'N1');
Kết quả:
1.0
Nhưng bạn cũng có thể tăng số vị trí thập phân:
SELECT FORMAT(1, 'N7');
Kết quả:
1.0000000
Trong các ví dụ này, 1
và 7
được gọi là bộ chỉ định độ chính xác .
Các thông số kỹ thuật chính xác là tùy chọn. Chúng có thể là một giá trị từ 0 đến 99, chỉ định độ chính xác của kết quả. Cách nó hoạt động phụ thuộc vào định dạng định dạng đang được sử dụng. Đối với một số chỉ định định dạng, nó sẽ chỉ định tổng số chữ số trong kết quả, đối với những người khác, nó sẽ chỉ định số vị trí thập phân. Trong các trường hợp khác, nó sẽ bị bỏ qua hoàn toàn. Xem danh sách đầy đủ các mã định dạng số tiêu chuẩn để xem các mã định độ chính xác ảnh hưởng như thế nào đến kết quả đầu ra từ mỗi mã định dạng.
Phần trăm
Các ví dụ sau sử dụng P
đối số, định dạng số dưới dạng giá trị phần trăm. Nó nhân số với 100, sau đó thêm dấu phần trăm được bản địa hóa.
SELECT FORMAT(1, 'P') AS 'Example 1', FORMAT(.375, 'P') AS 'Example 2', FORMAT(.0375, 'P', 'tr-tr') AS 'Example 3';
Kết quả:
Example 1 Example 2 Example 3 --------- --------- --------- 100.00 % 37.50 % %3,75
Lưu ý rằng “Ví dụ 3” bao gồm đối số thứ ba, chỉ định văn hóa sẽ được sử dụng trong đầu ra. Trong trường hợp này, tôi sử dụng tr-tr
cho tiếng Thổ Nhĩ Kỳ. Điều này dẫn đến dấu phần trăm được thêm vào trước số (thay vì được thêm vào như những dấu khác). Nó cũng dẫn đến dấu phẩy được sử dụng làm dấu phân tách thập phân.
Nếu bạn không cung cấp đối số "văn hóa", ngôn ngữ của phiên hiện tại sẽ được sử dụng.
Như bạn có thể tưởng tượng, bạn có thể nhận được các kết quả khá khác nhau tùy thuộc vào ngôn ngữ hiện tại của bạn hoặc giá trị của bất kỳ lập luận “văn hóa” nào. Xem Cách cài đặt ngôn ngữ có thể ảnh hưởng đến kết quả FORMAT () của bạn để biết thêm ví dụ.
Tiền tệ
Bạn có thể sử dụng C
để trả về giá trị tiền tệ.
SELECT FORMAT(1, 'C');
Kết quả:
$1.00
Bạn cũng có thể thêm ngôn ngữ làm tham số thứ ba.
Dưới đây là một số ví dụ:
SELECT FORMAT(1, 'C', 'fr-FR') AS France, FORMAT(1, 'C', 'th-TH') AS Thailand, FORMAT(1, 'C', 'ja-JP') AS Japan;
Kết quả:
France Thailand Japan ------ -------- ----- 1,00 € ฿1.00 ¥1
Hàm mũ (Khoa học)
Bạn có thể sử dụng E
để chỉ định ký hiệu theo cấp số nhân.
SELECT FORMAT(1234.56789, 'E');
Kết quả:
1.234568E+003
Hệ thập lục phân
Bạn thậm chí có thể định dạng một số dưới dạng thập lục phân. Để thực hiện việc này, hãy sử dụng X
đối số:
SELECT FORMAT(10, 'X');
Kết quả:
A
Hệ thập lục phân là cơ số 16. Do đó, số đếm đi 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F trước khi bắt đầu lại (ví dụ:10 trong hệ thập lục phân là số tương đương của 16 trong hệ thập phân và 11 tương đương với 17, v.v.). Đó là lý do tại sao ví dụ ở đây dẫn đến A
, bởi vì trong hệ thập lục phân, A
đến sau 9
.
Đây là một ví dụ khác, lần này với số lượng lớn hơn:
SELECT FORMAT(7145, 'X');
Kết quả:
1BE9
Định dạng tùy chỉnh
Bạn cũng có thể tạo định dạng tùy chỉnh của riêng mình bằng cách sử dụng chuỗi định dạng số tùy chỉnh. Điều này bao gồm một loạt các mã định dạng số tùy chỉnh cung cấp một mẫu cho số của bạn.
Điều này được giải thích dễ dàng hơn với một ví dụ:
SELECT FORMAT(123456789, '##-###-####');
Kết quả:
12-345-6789
Trong trường hợp này, tôi sử dụng trình giữ chỗ chữ số (#
). Phần giữ chỗ chữ số cho phép tôi chỉ định định dạng cho số bằng cách sử dụng #
biểu tượng như một trình giữ chỗ cho mỗi số.
Dấu phẩy
Một ví dụ khác:
SELECT FORMAT(123456789, '#,#');
Kết quả:
123,456,789
Zeros hàng đầu
Một công cụ xác định định dạng số tùy chỉnh khác bằng 0 (0
). Bạn có thể sử dụng điều này để chèn một số bằng các số 0 ở đầu:
SELECT FORMAT(7, '000') AS 'Example 1', FORMAT(123, '0000') AS 'Example 2', FORMAT(123, '00000') AS 'Example 3';
Kết quả:
Example 1 Example 2 Example 3 --------- --------- --------- 007 0123 00123
Bạn cũng có thể sử dụng nó để loại bỏ các số không:
SELECT FORMAT(0123, '000') AS 'Example 1', FORMAT(0123, '0000') AS 'Example 2', FORMAT(000123, '00000') AS 'Example 3';
Kết quả:
Example 1 Example 2 Example 3 --------- --------- --------- 123 0123 00123
Tham chiếu thông số định dạng số
Các bài viết sau chứa tất cả các từ định dạng số mà bạn có thể sử dụng với FORMAT()
cùng với các ví dụ T-SQL.
- Chuỗi định dạng số chuẩn
- Chuỗi định dạng số tùy chỉnh
Đây là các mã định dạng giống nhau được hỗ trợ bởi .NET Framework (FORMAT()
chức năng dựa trên .NET Framework).
Ngày và giờ
FORMAT()
chức năng này cũng cho phép bạn định dạng ngày và giờ.
Ngày và giờ có một tập hợp các chỉ định định dạng riêng biệt:
- Chuỗi định dạng ngày và giờ chuẩn
- Chuỗi định dạng ngày và giờ tùy chỉnh