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

2 cách để định dạng một số với Zeros hàng đầu trong Oracle

Khi sử dụng Cơ sở dữ liệu Oracle để định dạng một số có các số 0 ở đầu, chúng ta cần chuyển đổi nó thành một chuỗi và định dạng nó cho phù hợp.

Bạn có thể sử dụng TO_CHAR(number) hàm để định dạng các số với các số không ở đầu.

Và có lẽ một thực tế ít được biết đến hơn, là bạn cũng có thể sử dụng LPAD() hàm để đệm một số bằng các số 0 ở đầu.

TO_CHAR() Chức năng

Khi sử dụng TO_CHAR(number) , sử dụng 0 phần tử định dạng để bao gồm các số không ở đầu và / hoặc ở cuối.

Ví dụ:

SELECT TO_CHAR(7, 'fm000')
FROM DUAL;

Kết quả:

007

Đây là khi so sánh với 9 phần tử định dạng:

SELECT 
    TO_CHAR(7, 'fm999') AS "9",
    TO_CHAR(7, 'fm000') AS "0"
FROM DUAL;

Kết quả:

   9      0 
____ ______ 
7    007   

Số lượng các số 0 ở đầu được xác định bởi số lượng 0 các phần tử định dạng và số chữ số trong số:

SELECT 
    TO_CHAR(77, 'fm0') AS "r1",
    TO_CHAR(77, 'fm00000') AS "r2",
    TO_CHAR(777, 'fm00000') AS "r3",
    TO_CHAR(7777, 'fm00000') AS "r4",
    TO_CHAR(77777, 'fm00000') AS "r5"
FROM DUAL;

Kết quả:

   r1       r2       r3       r4       r5 
_____ ________ ________ ________ ________ 
##    00077    00777    07777    77777   

fm công cụ sửa đổi định dạng loại bỏ bất kỳ phần đệm ở đầu và / hoặc ở cuối có thể được đưa vào kết quả. Ví dụ, khi số âm, dấu trừ được đặt trước. Nhưng khi số là số dương, không có dấu nào được bao gồm và một khoảng trắng sẽ xuất hiện ở vị trí mà dấu cộng sẽ ở đó.

Dưới đây là một ví dụ để chứng minh điều này:

SELECT 
    TO_CHAR(-7, '000') AS "Minus Sign",
    TO_CHAR(7, '000') AS "Padded",
    TO_CHAR(7, 'fm000') AS "Not Padded"
FROM DUAL;

Kết quả:

   Minus Sign    Padded    Not Padded 
_____________ _________ _____________ 
-007           007      007          

LPAD() Chức năng

Ngoài ra, chúng ta có thể sử dụng LPAD() hàm để định dạng các số với các số không ở đầu.

Ví dụ:

SELECT LPAD(7, 3, '0')
FROM DUAL;

Kết quả:

007

Một ví dụ khác:

SELECT 
    LPAD(77, 1, '0') AS "r1",
    LPAD(77, 5, '0') AS "r2",
    LPAD(777, 5, '0') AS "r3",
    LPAD(7777, 5, '0') AS "r4",
    LPAD(77777, 5, '0') AS "r5"
FROM DUAL;

Kết quả:

   r1       r2       r3       r4       r5 
_____ ________ ________ ________ ________ 
7     00077    00777    07777    77777   

Một trong những lợi ích mà LPAD() hơn phương pháp trước đó là chúng ta có thể đặt trước kết quả các ký tự khác - nó không cần phải là số 0 ở đầu.

SELECT 
    LPAD(77, 1, '.') AS "r1",
    LPAD(77, 5, '.') AS "r2",
    LPAD(777, 5, '.') AS "r3",
    LPAD(7777, 5, '.') AS "r4",
    LPAD(77777, 5, '.') AS "r5"
FROM DUAL;

Kết quả:

   r1       r2       r3       r4       r5 
_____ ________ ________ ________ ________ 
7     ...77    ..777    .7777    77777   

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tăng VOTE diskgroup trong ASM để nâng cấp GI 12.2

  2. Tại sao không có đầu ra khi khối ẩn danh PLSQL hoàn thành?

  3. Giá trị khác nhau được tính trên cùng một cột

  4. Chuỗi cập nhật trong Oracle với mili giây

  5. Cách xuất kết quả truy vấn Oracle sang tệp JSON khi sử dụng SQLcl