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

2 cách để thêm Zeros hàng đầu trong PostgreSQL

Trong PostgreSQL, chúng ta có thể sử dụng TO_CHAR() hàm để thêm các số không ở đầu vào một số. Hàm chuyển đổi số thành chuỗi, sử dụng định dạng (tùy chọn) mà chúng tôi chỉ định.

Một tùy chọn khác là 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() , 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');

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";

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";

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";

Kết quả:

Dấu trừ
 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 để đệm các số bằng các số 0 ở đầu:

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

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";

Kết quả:

 r1 |  r2   |  r3   |  r4   |  r5   
----+-------+-------+-------+-------
 7  | 00077 | 00777 | 07777 | 77777

Lưu ý rằng hàm này yêu cầu số được truyền dưới dạng một chuỗi. Do đó, trước tiên chúng ta cần chuyển số thành chuỗi. Ký tự đệm cũng cần phải là một chuỗi.

Vì vậy, chúng tôi có thể phải làm một cái gì đó như sau:

SELECT LPAD(CAST(7 AS varchar), 3, '0');

Kết quả:

007

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";

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. Sao lưu / Khôi phục cơ sở dữ liệu PostgreSQL dày đặc

  2. PostgreSQL tạo bảng nếu không tồn tại

  3. Chọn các cột có tên cột cụ thể trong PostgreSQL

  4. Làm thế nào để thực hiện tổng hợp giống nhau trên mọi cột mà không cần liệt kê các cột?

  5. Sử dụng tham số làm tên cột trong hàm Postgres