SQL单行函数-转换函数

ORACLE数据库之中的三种数据:数字(NUMBER)、字符串(VARCHAR2)、日期(DATE),转换函数的主要功能是完成这几种数据间的互相转换的操作,一共有3种转换函数:

1)TO_CHAR(字符串|列,格式字符串):将日期或者是数字变为字符串显示;

2)TO_DATE(字符串,格式字符串):将字符串变为DATE数据显示;

3)TO_NUMBER(字符串):将字符串变为数字显示;


1.TO_CHAR()函数

SQL> SELECT SYSDATE FROM dual;

SYSDATE
------------------
06-JUN-12

这个时候是按照“日-月-年”的格式显示,很明显这种显示格式不符合我们正常的格式显示,我们可以使用TO_CHAR(),但是使用此函数的话需要一些格式字符串:年(yyyy),月(mm),日(dd)。


SQL> SELECT TO_CHAR(SYSDATE,'yyyy-mm-dd'),TO_CHAR(SYSDATE,'yyyy'),TO_CHAR(SYSDATE,'mm'),TO_CHAR(SYSDATE,'dd') FROM dual;

TO_CHAR(SY TO_C TO TO
---------- ---- -- --
2012-06-06 2012 06 06

大家有没有发现显示数据之中有出现前导“0”的情况,要想去掉可以加入一个“fm”

SQL> SELECT TO_CHAR(SYSDATE,'fmyyyy-mm-dd'),TO_CHAR(SYSDATE,'yyyy'),TO_CHAR(SYSDATE,'fmmm'),TO_CHAR(SYSDATE,'fmdd') FROM dual;

TO_CHAR(SY TO_C TO TO
---------- ---- -- --
2012-6-6   2012 6  6

注意:前导“0”去掉只是好看。

我们可以有时要加上时间显示的需要如下:

SQL> SELECT TO_CHAR(SYSDATE,'yyyy-mm-dd hh24:mi:ss') FROM dual;

TO_CHAR(SYSDATE,'YY
-------------------
2012-06-06 10:21:27

注意:使用了TO_CHAR格式转换后,所有的内容全部是字符串,不在是之前的DATE型数据,TO_CHAR()函数也可以用于数字格式化上,这时每个“9”表示一位数字的概念,而不是数字9的概念;


SQL> SELECT TO_CHAR(123456789,'L999,999,999') FROM dual;

TO_CHAR(123456789,'L99
----------------------
          $123,456,789

大家有没有发现我在这里加入了一个“L”【 TO_CHAR(123456789,'L999,999,999')】,L表示是LOCALE的含义,即:当前的所在语言环境的货币符号。

2.TO_DATE()函数

此函数的主要功能是将以个字符串变为DATE型数据;

SQL> SELECT TO_DATE('2012-06-06','yyyy-mm-dd') FROM dual;

TO_DATE('2012-06-0
------------------
06-JUN-12

注意:一般此函数在更新数据库的时候使用较多;

3.TO_NUMBER()函数:基本不用

TO_NUMBER()函数将字符串变为数字;

SQL> SELECT TO_NUMBER('1')+TO_NUMBER('3') FROM dual;

TO_NUMBER('1')+TO_NUMBER('3')
-----------------------------
                            4
但是在我们的ORACLE数据库不使用TO_NUMBER()也可以完成;

SQL> SELECT '1'+'3' FROM dual;

   '1'+'3'
----------
         4

所以现在的TO_NUMBER()函数基本上已经不考虑了,大家重点放在TO_CHAR()和TO_DATE()函数上。