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

Thêm dấu cộng / dấu trừ vào một số trong PostgreSQL

Trong PostgreSQL, bạn có thể sử dụng to_char() để xuất ra một số ở một định dạng nhất định, bao gồm cả dấu cộng hoặc dấu trừ để cho biết đó là số dương hay số âm.

Để thực hiện việc này, hãy sử dụng một trong S , MI , PL hoặc SG trong chuỗi định dạng của bạn.

Một tùy chọn khác là sử dụng PR để đặt bất kỳ giá trị âm nào trong dấu ngoặc nhọn.

Mẫu Mẫu cho Số đã ký

Các mẫu mẫu sau có thể được sử dụng để áp dụng dấu hiệu thích hợp cho số.

Mẫu Mô tả
MI Dấu trừ ở vị trí đã chỉ định (nếu số <0).
PL Dấu cộng ở vị trí đã chỉ định (nếu số> 0).
SG Dấu cộng hoặc dấu trừ ở vị trí đã chỉ định, tùy thuộc vào số là số dương hay số âm.
S Ký hiệu được neo vào số (sử dụng ngôn ngữ).
PR Điều này bao gồm mọi giá trị âm bên trong dấu ngoặc nhọn.

Lưu ý rằng MI , PL hoặc SG là các tiện ích mở rộng Postgres (chúng không phải là SQL chuẩn).

Ví dụ sử dụng S

Dưới đây là một ví dụ để chứng minh S mẫu.

SELECT to_char(1, 'S9');

Kết quả:

+1

Trong trường hợp này, số là số dương và do đó sử dụng ngôn ngữ của tôi, dấu cộng được thêm vào trước.

Đây là nó một lần nữa, nhưng với ba giá trị; một tích cực, một tiêu cực và bằng không.

SELECT 
  to_char(1, 'S9') AS "1",
  to_char(-1, 'S9') AS "-1",
  to_char(0, 'S9') AS "0";

Kết quả:

 1  | -1 | 0  
----+----+----
 +1 | -1 | +0

Ví dụ sử dụng SG

Đây là ví dụ tương tự với SG mẫu.

SELECT 
  to_char(1, 'SG9') AS "1",
  to_char(-1, 'SG9') AS "-1",
  to_char(0, 'SG9') AS "0";

Kết quả:

 1  | -1 | 0  
----+----+----
 +1 | -1 | +0

Ví dụ sử dụng MI

Đây là những gì sẽ xảy ra nếu tôi hoán đổi SG với MI .

SELECT 
  to_char(1, 'MI9') AS "1",
  to_char(-1, 'MI9') AS "-1",
  to_char(0, 'MI9') AS "0";

Kết quả:

 1  | -1 | 0  
----+----+----
  1 | -1 |  0

Chỉ số âm mới nhận được dấu trừ. Số dương và số 0 không có bất kỳ dấu hiệu nào.

Ví dụ sử dụng PL

Đây là kết quả đầu ra trên hệ thống của tôi khi tôi sử dụng PL .

SELECT 
  to_char(1, 'PL9') AS "1",
  to_char(-1, 'PL9') AS "-1",
  to_char(0, 'PL9') AS "0";

Kết quả:

  1  | -1  |  0  
-----+-----+-----
 + 1 |  -1 | + 0

Ví dụ sử dụng PR

Đây là kết quả đầu ra trên hệ thống của tôi khi tôi sử dụng PR .

SELECT 
  to_char(1, '9PR') AS "1",
  to_char(-1, '9PR') AS "-1",
  to_char(0, '9PR') AS "0";

Kết quả:

  1  | -1  |  0  
-----+-----+-----
  1  | <1> |  0 

Lưu ý rằng PR phải đến sau 9 .

Đây là những gì sẽ xảy ra nếu tôi cố gắng đặt nó trước 9 :

SELECT 
  to_char(1, 'PR9') AS "1",
  to_char(-1, 'PR9') AS "-1",
  to_char(0, 'PR9') AS "0";

Kết quả:

ERROR:  "9" must be ahead of "PR"

SG so với S

Bạn có thể nhận thấy rằng các ví dụ sử dụng SGS xuất hiện cùng một kết quả và do đó tự hỏi sự khác biệt giữa chúng là gì.

Sự khác biệt là S được neo vào số trong khi SG , MI , PL không.

S cũng sử dụng ngôn ngữ, do đó, ký hiệu thực tế được sử dụng sẽ phụ thuộc vào ngôn ngữ của bạn.

Dưới đây là một ví dụ chứng minh sự khác biệt về điểm neo.

SELECT 
  to_char(1, 'S999') AS "S",
  to_char(1, 'SG999') AS "SG";

Kết quả:

  S   |  SG  
------+------
   +1 | +  1

Và đây là những gì sẽ xảy ra khi số lượng ngày càng lớn.

SELECT 
  to_char(1, 'S999') AS "S",
  to_char(1, 'SG999') AS "SG",
  to_char(10, 'S999') AS "S",
  to_char(10, 'SG999') AS "SG",
  to_char(100, 'S999') AS "S",
  to_char(100, 'SG999') AS "SG";

Kết quả:

  S   |  SG  |  S   |  SG  |  S   |  SG  
------+------+------+------+------+------
   +1 | +  1 |  +10 | + 10 | +100 | +100

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Hàm MAX () trong PostgreSQL

  2. Giải thích lệnh PostgreSQL VALUES

  3. Giải pháp Ruby chung cho SQLite3 LIKE hoặc PostgreSQL ILIKE?

  4. PostgreSQL 13:Đừng để các vị trí giết chết vị trí chính của bạn

  5. Tại sao các hàm PL / pgSQL có thể có tác dụng phụ, trong khi các hàm SQL thì không?