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

Làm thế nào để loại bỏ các dấu cách sau tên tháng trong Oracle

Nếu bạn đã từng sử dụng TO_CHAR() chức năng định dạng ngày sử dụng tên tháng, bạn có thể nhận thấy rằng đôi khi tháng được trả về với phần đệm bên phải.

Điều này xảy ra theo mặc định khi tên tháng ngắn hơn tên tháng dài nhất, dựa trên ngôn ngữ và lịch được sử dụng.

Ví dụ:nếu ngôn ngữ của bạn là tiếng Anh và lịch là Gregorian, thì tên tháng dài nhất là tháng 9, dài chín ký tự. Nếu bạn trả về tháng từ một ngày và có nghĩa là tháng 3 (dài năm ký tự), thì theo mặc định, tháng 3 sẽ có bốn dấu cách ở cuối (5 + 4 =9).

May mắn thay, có thể dễ dàng loại bỏ phần đệm bên phải này nếu cần. Để loại bỏ phần đệm bên phải, hãy sử dụng fm công cụ sửa đổi định dạng.

Vấn đề

Đầu tiên, đây là vấn đề chúng tôi đang cố gắng giải quyết:

SELECT 
    TO_CHAR(date '2030-03-08', 'DD-MONTH-YYYY')
FROM DUAL;

Kết quả:

08-MARCH    -2030

Chúng ta có thể thấy rằng có một khoảng cách lớn giữa tên tháng và năm. Nếu không muốn có khoảng cách này, chúng ta có thể sử dụng fm bổ ngữ, như được hiển thị bên dưới.

Giải pháp

Bây giờ đây là giải pháp:

SELECT 
    TO_CHAR(date '2030-03-08', 'fmDD-MONTH-YYYY')
FROM DUAL;

Kết quả:

8-MARCH-2030

Bây giờ không có khoảng cách giữa tháng và năm.

Tất cả những gì tôi đã làm là thêm vào trước mô hình định dạng với fm .

fm công cụ sửa đổi định dạng là viết tắt của “Fill Mode”. Theo mặc định, Oracle sử dụng các ký tự trống ở cuối và các số không ở đầu để điền vào các phần tử định dạng với độ rộng không đổi. Chiều rộng bằng chiều rộng hiển thị của phần tử lớn nhất cho mô hình định dạng có liên quan. Sử dụng fm công cụ sửa đổi loại bỏ tất cả các phần đệm như vậy.

Bạn có thể nhận thấy rằng fm bổ nghĩa cũng loại bỏ số 0 đứng đầu trên số ngày. Nếu không muốn, chúng ta có thể đặt fm bổ ngữ ở phía trước MONTH phần tử định dạng thay thế.

Như thế này:

SELECT 
    TO_CHAR(date '2030-03-08', 'DD-fmMONTH-YYYY')
FROM DUAL;

Kết quả:

08-MARCH-2030

Lần này, fm không được áp dụng cho ngày hôm đó, nhưng nó áp dụng cho tháng và năm.

Nếu chúng ta không muốn loại bỏ các số 0 ở đầu năm, thì chúng ta cần thêm một fm khác trước năm.

Dưới đây là một ví dụ minh họa ý tôi muốn nói:

SELECT 
    TO_CHAR(date '0030-03-08', 'DD-fmMONTH-YYYY') AS "r1",
    TO_CHAR(date '0030-03-08', 'DD-fmMONTH-fmYYYY') AS "r2"
FROM DUAL;

Kết quả:

            r1               r2 
______________ ________________ 
08-MARCH-30    08-MARCH-0030   

Cột đầu tiên chỉ sử dụng một fm (trước MONTH ).

Cột thứ hai sử dụng hai fm bổ ngữ (một ở trước MONTH và một ở phía trước YYYY ).


  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 giá trị phần tử xml trong Oracle

  2. Làm cách nào để nhập tệp XML trong Oracle SQL Developer?

  3. Cú pháp URL JDBC chính xác nếu sử dụng ví Oracle là gì?

  4. Tên cột bảng Oracle có khoảng trắng

  5. Nội dung trình tự RAC