一、原题
这里不再另外建表,使用oracle自带的测试表emp表,其中有一列hiredate列,和上面的格式类似。
测试ABCD四个选项的结果如下:
SQL> select ename,hiredate from emp;
ENAME HIREDATE
-------------------- ------------
SMITH 17-DEC-80
ALLEN 20-FEB-81
WARD 22-FEB-81
JONES 02-APR-81
MARTIN 28-SEP-81
BLAKE 01-MAY-81
CLARK 09-JUN-81
SCOTT 19-APR-87
KING 17-NOV-81
TURNER 08-SEP-81
ADAMS 23-MAY-87
JAMES 03-DEC-81
FORD 03-DEC-81
MILLER 23-JAN-82
14 rows selected.
SQL> col last_day for a30
SQL> SELECT ename, TO_CHAR(hiredate,'Day')|| ', '||
2 TO_CHAR(hiredate,'Month')|| ' '||
3 TO_CHAR(hiredate,'DD, YYYY') AS last_day
4 FROM emp;
ENAME LAST_DAY
-------------------- ------------------------------
SMITH Wednesday, December 17, 1980
ALLEN Friday , February 20, 1981
WARD Sunday , February 22, 1981
JONES Thursday , April 02, 1981
MARTIN Monday , September 28, 1981
BLAKE Friday , May 01, 1981
CLARK Tuesday , June 09, 1981
SCOTT Sunday , April 19, 1987
KING Tuesday , November 17, 1981
TURNER Tuesday , September 08, 1981
ADAMS Saturday , May 23, 1987
JAMES Thursday , December 03, 1981
FORD Thursday , December 03, 1981
MILLER Saturday , January 23, 1982
14 rows selected.
SQL> SELECT ename,TO_CHAR (hiredate,'fxDay')|| ', '||
2 TO_CHAR(hiredate,'fxMonth')|| ' '||
3 TO_CHAR(hiredate,'fxDD, YYYY') AS last_day
4 FROM emp;
ENAME LAST_DAY
-------------------- ------------------------------
SMITH Wednesday, December 17, 1980
ALLEN Friday , February 20, 1981
WARD Sunday , February 22, 1981
JONES Thursday , April 02, 1981
MARTIN Monday , September 28, 1981
BLAKE Friday , May 01, 1981
CLARK Tuesday , June 09, 1981
SCOTT Sunday , April 19, 1987
KING Tuesday , November 17, 1981
TURNER Tuesday , September 08, 1981
ADAMS Saturday , May 23, 1987
JAMES Thursday , December 03, 1981
FORD Thursday , December 03, 1981
MILLER Saturday , January 23, 1982
14 rows selected.
SQL> SELECT ename, TRIM(TO_CHAR(hiredate,'Day')) ||', '||
2 TRIM(TO_CHAR(hiredate,'Month')) ||' '||
3 TRIM(TO_CHAR(hiredate,'DD, YYYY')) AS last_day
4 FROM emp;
ENAME LAST_DAY
-------------------- ------------------------------
SMITH Wednesday, December 17, 1980
ALLEN Friday, February 20, 1981
WARD Sunday, February 22, 1981
JONES Thursday, April 02, 1981
MARTIN Monday, September 28, 1981
BLAKE Friday, May 01, 1981
CLARK Tuesday, June 09, 1981
SCOTT Sunday, April 19, 1987
KING Tuesday, November 17, 1981
TURNER Tuesday, September 08, 1981
ADAMS Saturday, May 23, 1987
JAMES Thursday, December 03, 1981
FORD Thursday, December 03, 1981
MILLER Saturday, January 23, 1982
14 rows selected.
SQL> SELECT ename,TO_CHAR(hiredate,'fmDay')||','||
2 TO_CHAR(hiredate,'fmMonth')||' '||
3 TO_CHAR(hiredate,'fmDD, YYYY') AS last_day
4 FROM emp;
ENAME LAST_DAY
-------------------- ------------------------------
SMITH Wednesday,December 17, 1980
ALLEN Friday,February 20, 1981
WARD Sunday,February 22, 1981
JONES Thursday,April 2, 1981
MARTIN Monday,September 28, 1981
BLAKE Friday,May 1, 1981
CLARK Tuesday,June 9, 1981
SCOTT Sunday,April 19, 1987
KING Tuesday,November 17, 1981
TURNER Tuesday,September 8, 1981
ADAMS Saturday,May 23, 1987
JAMES Thursday,December 3, 1981
FORD Thursday,December 3, 1981
MILLER Saturday,January 23, 1982
14 rows selected.
View the Exhibit and examine the data in the PROMO_NAME and PROMO_END_DATE columns of the PROMOTIONS table, and the required output format.

Which two queries give the correct result? (Choose two.)
A. SELECT promo_name, TO_CHAR(promo_end_date,'Day')|| ', '||
TO_CHAR(promo_end_date,'Month') ' '
TO_CHAR(promo_end_date,'DD, YYYY') AS last_day
FROM promotions;
B. SELECT promo_name,TO_CHAR (promo_end_date,'fxDay')|| ', '||
TO_CHAR(promo_end_date,'fxMonth')|| ' '||
TO_CHAR(promo_end_date,'fxDD, YYYY') AS last_day
FROM promotions;
C. SELECT promo_name, TRIM(TO_CHAR(promo_end_date,'Day')) ||', '||
TRIM(TO_CHAR(promo_end_date,'Month')) ||' '||
TRIM(TO_CHAR(promo_end_date,'DD, YYYY')) AS last_day
FROM promotions;
D. SELECT promo_name,TO_CHAR(promo_end_date,'fmDay')||','||
TO_CHAR(promo_end_date,'fmMonth')||' '||
TO_CHAR(promo_end_date,'fmDD, YYYY') AS last_day
FROM promotions;
答案:CD
二、题目翻译Which two queries give the correct result? (Choose two.)
A. SELECT promo_name, TO_CHAR(promo_end_date,'Day')|| ', '||
TO_CHAR(promo_end_date,'Month') ' '
TO_CHAR(promo_end_date,'DD, YYYY') AS last_day
FROM promotions;
B. SELECT promo_name,TO_CHAR (promo_end_date,'fxDay')|| ', '||
TO_CHAR(promo_end_date,'fxMonth')|| ' '||
TO_CHAR(promo_end_date,'fxDD, YYYY') AS last_day
FROM promotions;
C. SELECT promo_name, TRIM(TO_CHAR(promo_end_date,'Day')) ||', '||
TRIM(TO_CHAR(promo_end_date,'Month')) ||' '||
TRIM(TO_CHAR(promo_end_date,'DD, YYYY')) AS last_day
FROM promotions;
D. SELECT promo_name,TO_CHAR(promo_end_date,'fmDay')||','||
TO_CHAR(promo_end_date,'fmMonth')||' '||
TO_CHAR(promo_end_date,'fmDD, YYYY') AS last_day
FROM promotions;
答案:CD
下面是 PROMOTIONS表的PROMO_NAME and PROMO_END_DATE列的数据 与 PROMO_END_DATE输出的所需格式:
下面哪两个查询能给出正确结果?(选择两个)
三、题目解析下面哪两个查询能给出正确结果?(选择两个)
A选项不正确,都是默认的,显示长度一样,即显示结果会对齐显示,没有去掉多余的空格。
B选项不正确,fx加到此处没什么作用,fx为精确匹配格式,和A选项的结果类似,也是会对齐显示,有多余的空格。
C选项正确,使用trim函数去掉左右多余的空格。
D选项正确,使用fm去掉多余的空格。
fm的详细使用方法,详见:
http://blog.csdn.net/holly2008/article/details/25213993
四、测试 B选项不正确,fx加到此处没什么作用,fx为精确匹配格式,和A选项的结果类似,也是会对齐显示,有多余的空格。
C选项正确,使用trim函数去掉左右多余的空格。
D选项正确,使用fm去掉多余的空格。
fm的详细使用方法,详见:
http://blog.csdn.net/holly2008/article/details/25213993
这里不再另外建表,使用oracle自带的测试表emp表,其中有一列hiredate列,和上面的格式类似。
测试ABCD四个选项的结果如下:
SQL> select ename,hiredate from emp;
ENAME HIREDATE
-------------------- ------------
SMITH 17-DEC-80
ALLEN 20-FEB-81
WARD 22-FEB-81
JONES 02-APR-81
MARTIN 28-SEP-81
BLAKE 01-MAY-81
CLARK 09-JUN-81
SCOTT 19-APR-87
KING 17-NOV-81
TURNER 08-SEP-81
ADAMS 23-MAY-87
JAMES 03-DEC-81
FORD 03-DEC-81
MILLER 23-JAN-82
14 rows selected.
SQL> col last_day for a30
SQL> SELECT ename, TO_CHAR(hiredate,'Day')|| ', '||
2 TO_CHAR(hiredate,'Month')|| ' '||
3 TO_CHAR(hiredate,'DD, YYYY') AS last_day
4 FROM emp;
ENAME LAST_DAY
-------------------- ------------------------------
SMITH Wednesday, December 17, 1980
ALLEN Friday , February 20, 1981
WARD Sunday , February 22, 1981
JONES Thursday , April 02, 1981
MARTIN Monday , September 28, 1981
BLAKE Friday , May 01, 1981
CLARK Tuesday , June 09, 1981
SCOTT Sunday , April 19, 1987
KING Tuesday , November 17, 1981
TURNER Tuesday , September 08, 1981
ADAMS Saturday , May 23, 1987
JAMES Thursday , December 03, 1981
FORD Thursday , December 03, 1981
MILLER Saturday , January 23, 1982
14 rows selected.
SQL> SELECT ename,TO_CHAR (hiredate,'fxDay')|| ', '||
2 TO_CHAR(hiredate,'fxMonth')|| ' '||
3 TO_CHAR(hiredate,'fxDD, YYYY') AS last_day
4 FROM emp;
ENAME LAST_DAY
-------------------- ------------------------------
SMITH Wednesday, December 17, 1980
ALLEN Friday , February 20, 1981
WARD Sunday , February 22, 1981
JONES Thursday , April 02, 1981
MARTIN Monday , September 28, 1981
BLAKE Friday , May 01, 1981
CLARK Tuesday , June 09, 1981
SCOTT Sunday , April 19, 1987
KING Tuesday , November 17, 1981
TURNER Tuesday , September 08, 1981
ADAMS Saturday , May 23, 1987
JAMES Thursday , December 03, 1981
FORD Thursday , December 03, 1981
MILLER Saturday , January 23, 1982
14 rows selected.
SQL> SELECT ename, TRIM(TO_CHAR(hiredate,'Day')) ||', '||
2 TRIM(TO_CHAR(hiredate,'Month')) ||' '||
3 TRIM(TO_CHAR(hiredate,'DD, YYYY')) AS last_day
4 FROM emp;
ENAME LAST_DAY
-------------------- ------------------------------
SMITH Wednesday, December 17, 1980
ALLEN Friday, February 20, 1981
WARD Sunday, February 22, 1981
JONES Thursday, April 02, 1981
MARTIN Monday, September 28, 1981
BLAKE Friday, May 01, 1981
CLARK Tuesday, June 09, 1981
SCOTT Sunday, April 19, 1987
KING Tuesday, November 17, 1981
TURNER Tuesday, September 08, 1981
ADAMS Saturday, May 23, 1987
JAMES Thursday, December 03, 1981
FORD Thursday, December 03, 1981
MILLER Saturday, January 23, 1982
14 rows selected.
SQL> SELECT ename,TO_CHAR(hiredate,'fmDay')||','||
2 TO_CHAR(hiredate,'fmMonth')||' '||
3 TO_CHAR(hiredate,'fmDD, YYYY') AS last_day
4 FROM emp;
ENAME LAST_DAY
-------------------- ------------------------------
SMITH Wednesday,December 17, 1980
ALLEN Friday,February 20, 1981
WARD Sunday,February 22, 1981
JONES Thursday,April 2, 1981
MARTIN Monday,September 28, 1981
BLAKE Friday,May 1, 1981
CLARK Tuesday,June 9, 1981
SCOTT Sunday,April 19, 1987
KING Tuesday,November 17, 1981
TURNER Tuesday,September 8, 1981
ADAMS Saturday,May 23, 1987
JAMES Thursday,December 3, 1981
FORD Thursday,December 3, 1981
MILLER Saturday,January 23, 1982
14 rows selected.