Một số DBMS có các chức năng cho phép chúng ta định dạng số dưới dạng tiền tệ chỉ bằng cách chuyển chuỗi định dạng thích hợp. Điều này chuyển đổi số thành một chuỗi có ký hiệu tiền tệ áp dụng, dấu phân tách nhóm và dấu thập phân (nếu có liên quan).
Các DBMS khác không dễ dàng như vậy và trước tiên bạn cần phải làm một chút công việc.
Dưới đây là các ví dụ về việc sử dụng SQL để định dạng số làm đơn vị tiền tệ trong một số DBMS phổ biến nhất.
Oracle
Cơ sở dữ liệu Oracle cung cấp cho chúng tôi TO_CHAR(number)
, cho phép chúng ta định dạng số bằng cách chuyển một mô hình định dạng (hoặc chuỗi định dạng). Chúng ta có thể sử dụng hàm này để trả về một số dưới dạng tiền tệ.
Oracle cung cấp một số yếu tố định dạng để trả về ký hiệu tiền tệ, tùy thuộc vào ký hiệu tiền tệ mà bạn yêu cầu - ký hiệu nội tệ, ký hiệu tiền tệ ISO hoặc ký hiệu tiền tệ kép.
Dưới đây là một ví dụ về cả ba:
ALTER SESSION SET NLS_TERRITORY = 'Denmark';
SELECT
TO_CHAR(12345, 'fmL99G999D00') AS "r1",
TO_CHAR(12345, 'fmC99G999D00') AS "r3",
TO_CHAR(12345, 'fmU99G999D00') AS "r3"
FROM DUAL;
Kết quả:
r1 r3 r3 ______________ _______________ _____________ kr12.345,00 DKK12.345,00 €12.345,00
Xem Cách định dạng một số làm đơn vị tiền tệ trong Oracle để biết thêm thông tin và ví dụ.
Máy chủ SQL
SQL Server cung cấp hàm FORMAT (), cho phép chúng ta định dạng số và ngày tháng. C
công cụ định dạng có thể được sử dụng để trả về một số dưới dạng đơn vị tiền tệ:
SELECT FORMAT(1234, 'C');
Kết quả:
$1,234.00
Có những việc khác bạn có thể làm với chuỗi định dạng, chẳng hạn như chỉ định trả về bao nhiêu vị trí thập phân.
Hàm cũng chấp nhận đối số thứ ba tùy chọn, có thể được sử dụng để chỉ định ngôn ngữ sử dụng cho định dạng số và tiền tệ. Các ngôn ngữ khác nhau sử dụng các quy ước khác nhau cho số và đơn vị tiền tệ của họ.
Xem Cách định dạng số dưới dạng đơn vị tiền tệ trong SQL Server (T-SQL) để biết thêm thông tin và ví dụ.
PostgreSQL
PostgreSQL có money
loại dữ liệu thường sẽ được định dạng theo đơn vị tiền tệ địa phương khi xuất:
SELECT CAST(3145 as money);
Kết quả:
$3,145.00
PostgreSQL cũng có TO_CHAR()
hàm chuyển đổi giá trị thành một chuỗi và định dạng nó dựa trên chuỗi định dạng mà chúng tôi cung cấp. Do đó, chúng tôi có thể sử dụng nó để định dạng số dưới dạng tiền tệ bằng cách chuyển chuỗi định dạng thích hợp.
Xem Cách Định dạng Số dưới dạng Đơn vị tiền tệ trong PostgreSQL để biết thêm.
MySQL
Trong MySQL, chúng ta phải làm nhiều việc hơn một chút. MySQL không cung cấp cho chúng tôi công cụ định dạng cho ký hiệu tiền tệ, vì vậy chúng tôi cần cung cấp công cụ định dạng của riêng mình:
SELECT CONCAT('$', FORMAT(1234.5678, 2));
Kết quả:
$1,234.57
Ở đây, chúng tôi đã sử dụng CONCAT()
hàm để nối ký hiệu tiền tệ và số, và chúng tôi đã sử dụng FORMAT()
chức năng định dạng số thành định dạng mong muốn của chúng tôi.
Có thể chỉ định ngôn ngữ cho định dạng số. Điều này xác định ký tự nào được sử dụng cho dấu phân tách nhóm và dấu thập phân.
Xem Cách Định dạng Số dưới dạng Đơn vị tiền tệ trong MySQL để biết thêm thông tin.
MariaDB
MariaDB rất giống MySQL và chúng ta có thể sử dụng cùng một phương pháp mà chúng ta đã sử dụng với MySQL.
Dưới đây là một ví dụ chỉ định một ngôn ngữ để sử dụng cho định dạng số:
SELECT CONCAT('€', FORMAT(8790.2398, 2, 'de_DE'));
Kết quả:
€8.790,24
Trong trường hợp này, chúng tôi đã cung cấp biểu tượng Euro (€
) và định dạng số để sử dụng các quy ước đánh số được sử dụng ở Đức.
Xem Định dạng một số làm đơn vị tiền tệ trong MariaDB để biết thêm thông tin.
SQLite
SQLite có PRINTF()
cho phép chúng ta định dạng một số dựa trên một chuỗi định dạng. Ví dụ:chúng ta có thể sử dụng điều này để định dạng số thành một số vị trí thập phân nhất định, đồng thời thêm ký hiệu tiền tệ.
SELECT PRINTF("$%.2f", 123.457);
Kết quả:
$123.46
Cập nhật :SQLite 3.38.0 (phát hành ngày 22 tháng 2 năm 2022) được đổi tên thành PRINTF()
hàm thành FORMAT()
. PRINTF()
gốc tên được giữ lại làm bí danh để tương thích ngược.
Vì vậy, ví dụ trên có thể được thay đổi thành thế này:
SELECT FORMAT("$%.2f", 123.457);
Kết quả:
$123.46
Xem tài liệu SQLite để biết thêm về FORMAT()
chức năng.