Hỏi về fill mode (fm) trong format mask TO_CHAR, TO_DATE

Thảo luận về kỷ thuật viết SQL và PL/SQL, cũng như công cụ sử dụng và những vấn đề liên quan.
Post Tue Sep 04, 2012 2:58 pm
WELcome to ORAVN!!

trantuananh0502

Thành viên ORAVN
Thành viên ORAVN
Posts: 6
Joined: Thu Apr 26, 2012 12:38 pm

Hỏi về fill mode (fm) trong format mask TO_CHAR, TO_DATE

Em đang tự học về Oracle. Em đọc tài liệu chuẩn của Oracle về SQL. Nó có nói đến fm operator trong format mask cho hàm TO_CHAR và TO_DATE nhưng em không hiểu công dụng của nó là gì. 2 VD trong sách đều ra cùng 1 kết quả giống nhau:
Code: Select all
SELECT TO_CHAR(sysdate, 'Month')||'is a special time' FROM DUAL;
SELECT TO_CHAR(sysdate, 'fmMonth')||'is a special time' FROM DUAL;

Đều ra là ‘January is a special time’ có khoảng trắng ở giữa tháng và chuỗi nhưng em thử trên máy thì cả 2 đều cho kết quả 'Septemberis a special time' không có khoảng trắng ở giữa. Vậy fm dùng để làm gì và máy em có vấn đề gì sao khi không ra giống trong sách?

Các anh chị giúp đỡ và giải đáp thắc mắc dùm em. Cám ơn mọi người nhiều!






Post Tue Sep 04, 2012 4:34 pm
User avatar

nhsang

Administrator
Administrator
Posts: 3466
Joined: Mon Jul 16, 2007 1:38 pm
Location: Sài Gòn

Re: Hỏi về fill mode (fm) trong format mask TO_CHAR, TO_DATE

fm dùng remove ký tự thừa trong chuổi format của bạn:


vd1: trong vd này fm remove các khoảng trắng phía sau Day

Code: Select all
SQL> select to_char(sysdate,'Day Month YYYY') from dual ;

TO_CHAR(SYSDATE,'DAYMONT
------------------------
Tuesday   September 2012

SQL> select to_char(sysdate,'fmDay Month YYYY') from dual ;

TO_CHAR(SYSDATE,'FMDAYMO
------------------------
Tuesday September 2012


vd2: fm remove số 0 vô nghĩa trước số 4

Code: Select all
SQL> select to_char(sysdate,'dd Month YYYY') from dual ;

TO_CHAR(SYSDATE,'
-----------------
04 September 2012

SQL> select to_char(sysdate,'fmdd Month YYYY') from dual ;

TO_CHAR(SYSDATE,'
-----------------
4 September 2012

SQL>




Chán làm SYSTEM DBA, muốn code PL/SQL, ETL,... ai có jobs hay giới thiệu tui ! => nhsang@oravn.com


Post Tue Sep 04, 2012 9:54 pm
WELcome to ORAVN!!

trantuananh0502

Thành viên ORAVN
Thành viên ORAVN
Posts: 6
Joined: Thu Apr 26, 2012 12:38 pm

Re: Hỏi về fill mode (fm) trong format mask TO_CHAR, TO_DATE

Cảm ơn anh Sang giải đáp.
Em vẫn có thắc mắc là trong sách nó có nói "There is no need to add a space in front of the literal 'is a special time' since the TO_CHAR function automatically pads the name of the month with a space". Nhưng 2 kết quả trả về trên máy của em, dù có dùng fm hay không thì Month vẫn dính vào chuỗi kí tự 'is a special time' mà không tự động thêm khoảng trắng phía sau







Return to Oracle PL/SQL và SQL

Who is online

Users browsing this forum: No registered users and 2 guests