2008-10-01 27 views
15

Tôi cần phải nhập số bằng số 0 đứng đầu (tổng số 8 chữ số) để hiển thị. Tôi đang sử dụng oracle.không gian trống hàng đầu không mong muốn trên định dạng số oracle

select to_char(1011,'00000000') OPE_NO from dual; 
select length(to_char(1011,'00000000')) OPE_NO from dual; 

Thay vì '00001011' tôi nhận được '00001011'. Tại sao tôi nhận được khoảng trống thừa bổ sung? Chuỗi định dạng số chính xác để thực hiện điều này là gì?

P.S. Tôi nhận ra rằng tôi chỉ có thể sử dụng trim(), nhưng tôi muốn hiểu định dạng số tốt hơn.

@Eddie: Tôi đã đọc tài liệu. Tuy nhiên, tôi vẫn không hiểu làm thế nào để thoát khỏi khoảng trắng hàng đầu.

@David: Vậy điều đó có nghĩa là không có cách nào khác ngoài việc sử dụng trim()?

+1

Xem thêm http://stackoverflow.com/questions/6695604/oracle-why-does-the-leading-zero-of-a-number-disappear-when-converting-it-to- c) 27946804 # 27946804 trên các giai đoạn hàng đầu không mong muốn (thiếu số 0 đứng đầu). – Vadzim

Trả lời

29

Sử dụng FM (Chế độ điền), ví dụ:

select to_char(1011,'FM00000000') OPE_NO from dual;

6

Từ đó cùng documentation đề cập bởi EddieAwad:

giá trị trả về âm tự động chứa một dấu hiệu tiêu cực hàng đầu và giá trị tích cực tự động chứa một không gian hàng đầu trừ khi mô hình định dạng chứa MI, S, hoặc Định dạng PR phần tử.


EDIT: Cách đúng là sử dụng modifier FM, như đã trả lời bởi Steve Bosman. Đọc phần về Format Model Modifiers để biết thêm thông tin.

Các vấn đề liên quan