Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Định dạng số trong Oracle bằng TO_CHAR

Đảm bảo bạn sử dụng kiểu dữ liệu số với tỷ lệ và độ chính xác phù hợp với dữ liệu thay vì sử dụng NUMBER không có quy mô và độ chính xác. Nếu bạn đang lưu trữ đô la / euro / bảng Anh / vv. sau đó là Tổng sản phẩm trên thế giới là 100.000.000.000.000 đô la vào năm 2014. Giả sử rằng bạn sẽ không xử lý nhiều hơn mức này thì cột đơn vị tiền tệ của bạn có thể là:

NUMBER(17,2)

Nếu bạn nhận được giá trị lớn hơn giá trị đó thì bạn cần phải thực hiện kiểm tra dữ liệu của mình và suy nghĩ xem liệu một số tiền lớn hơn tổng sản phẩm của thế giới có hợp lý hay không. Nếu bạn định lưu trữ các giá trị, chẳng hạn như Yên hoặc đô la Zimbabwe thì hãy điều chỉnh tỷ lệ một cách thích hợp.

Bạn thậm chí có thể xác định một kiểu con trong một gói là:

CREATE PACKAGE currencies_pkg IS
  SUBTYPE currency_type IS NUMBER(17,2);

  FUNCTION formatCurrency(
    amount IN CURRENCY_TYPE
  ) RETURN VARCHAR2;
END;
/

Và mã của bạn để định dạng nó có thể là:

CREATE PACKAGE BODY currencies_pkg IS
  FUNCTION formatCurrency(
    amount IN CURRENCY_TYPE
  ) RETURN VARCHAR2
  IS
  BEGIN
    RETURN TO_CHAR( currency_value, 'FM999999999999990D00' );
  END;
END;
/

Sau đó, nếu bạn tham chiếu loại phụ đó trong các thủ tục / gói được lưu trữ của mình, bạn sẽ không thể vượt quá kích thước tối đa của loại dữ liệu tiền tệ mà không có ngoại lệ được nêu ra. Mô hình định dạng để hiển thị giá trị chỉ cần được xác định ở một nơi duy nhất và vì đầu vào bị giới hạn ở loại phụ tiền tệ, nên chức năng định dạng sẽ không bao giờ vượt quá tỷ lệ / độ chính xác đã áp đặt và không thể xuất ra # s.

CREATE PROCEDURE your_procedure(
  in_value1 IN ACCOUNTS_TABLE.ACCOUNT_BALANCE%TYPE,
  in_value2 IN ACCOUNTS_TABLE.ACCOUNT_BALANCE%TYPE
)
IS
  v_value CURRENCIES_PKG.CURRENCY_TYPE;
BEGIN
  -- Do something
  v_value := in_value1 + in_value2;
  -- Output formatted value
  DBMS_OUTPUT.PUT_LINE( CURRENCIES_PKG.formatCurrency( v_value ) );
END;
/


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Chèn tệp văn bản vào Oracle với Chèn hàng loạt

  2. Kết nối không hoạt động của Oracle

  3. Oracle - Không thể sử dụng dấu * với cột khác trong mệnh đề chọn

  4. Nhập tệp CSV trong bảng Oracle bằng quy trình đã lưu trữ

  5. Gọi dịch vụ Windows từ Oracle SAU KHI CHÈN kích hoạt