Rất may (?), Trong SQL Server 2012+ , bạn hiện có thể sử dụng FORMAT () để đạt được điều này:
FORMAT(@s,'#,0.0000')
Trong các phiên bản trước, có nguy cơ trông thật xấu xí
[Truy vấn] :
declare @s decimal(18,10);
set @s = 1234.1234567;
select replace(convert(varchar,cast(floor(@s) as money),1),'.00',
'.'+right(cast(@s * 10000 +10000.5 as int),4))
Trong phần đầu tiên, chúng tôi sử dụng MONEY-> VARCHAR để tạo dấu phẩy, nhưng FLOOR () được sử dụng để đảm bảo các số thập phân chuyển đến .00
. Điều này có thể dễ dàng nhận biết và được thay thế bằng 4 chữ số sau chữ số thập phân bằng cách sử dụng hỗn hợp dịch chuyển (*10000
) và CAST dưới dạng INT (cắt ngắn) để lấy ra các chữ số.
[Kết quả] :
| COLUMN_0 |
--------------
| 1,234.1235 |
Nhưng trừ khi bạn phải gửi báo cáo kinh doanh bằng SQL Server Management Studio hoặc SQLCMD, điều này KHÔNG BAO GIỜ giải pháp chính xác, ngay cả khi nó có thể được thực hiện. Bất kỳ môi trường báo cáo hoặc giao diện người dùng nào đều có các chức năng thích hợp để xử lý định dạng hiển thị.