转换函数

目录

转字符串函数

格式化日期

查询每个员工的编号、姓名、雇佣年份

查询所有在 2 月份雇佣的员工信息

转换数字

转日期函数

将字符串转换为日期

转数字函数

验证


Oracle从入门到总裁:https://blog.csdn.net/weixin_67859959/article/details/135209645

前面已经介绍了 3 种函数类型:字符串、数字和日期。现在介绍转换函数可以实现字符串与日期、数字的转换。转换函数共有 3 种:to_char()、to_date() 和 to_number()

转字符串函数

该函数可以将数字或者日期转换为字符串

to_char( 列 | 日期 | 数字,转换格式 )

转换格式主要有两类

(1)日期转换为字符串:年(yyyy) 、月(mm) 、日(dd) 、时(hh、hh24) 、分(mi) 、秒(ss)

(2)数字转换为字符串:任意的一位数字(9) 、货币(L,本地货币)

格式化日期

SQL> select to_char(sysdate,'yyy-mm-dd'),to_char(sysdate,'yyyy-mm-dd hh24:mi:ss')
  2  from dual;

TO_CHAR(SYSDATE,'Y TO_CHAR(SYSDATE,'YYYY-MM-DDHH24:MI:SS'
------------------ --------------------------------------
024-02-03          2024-02-03 22:17:48

分别把当前的日期转换为字符串

一定要记住,这样的转换操作只是给我们提供了一个思路:日期改变格式后,最终的数据类型就是字符串。这样的转换实际上会破坏程序的一致性

现在可以进一步探索 to_char() 的好处,它可以实现年、月、日的拆分

查询每个员工的编号、姓名、雇佣年份

SQL> select empno,ename,to_char(hiredate,'yyyy') year
  2  from emp;

     EMPNO ENAME                YEAR
---------- -------------------- --------
      7369 SMITH                1980
      7499 ALLEN                1981
      7521 WARD                 1981
      7566 JONES                1981
      7654 MARTIN               1981
      7698 BLAKE                1981
      7782 CLARK                1981
      7839 KING                 1981
      7844 TURNER               1981
      7900 JAMES                1981
      7902 FORD                 1981

可以看出每个员工的雇佣日期只保留了年份

查询所有在 2 月份雇佣的员工信息

SQL> select *
  2  from emp
  3  where to_char(hiredate,'mm')='02';

     EMPNO ENAME                JOB                       MGR HIREDATE              SAL       COMM     DEPTNO
---------- -------------------- ------------------ ---------- -------------- ---------- ---------- ----------
      7499 ALLEN                SALESMAN                 7698 20-2月 -81           1600        300         30
      7521 WARD                 SALESMAN                 7698 22-2月 -81           1250        500         30

下面这条代码也可以实现同样的效果

select *
from emp
where to_char(hiredate,'mm')=2;

两条查询代码都可以查询出所有在 2 月被雇佣的员工信息,这是因为在 Oracle 中提供有数据类型的自动转换,如果发现比较的类型不统一,它在一定的范围内是可以转换的

to_char() 函数除了可以进行日期的转换之外,也支持数字转换。所谓的数字转换往往是针对数字的可读性进行一些格式化的操作

转换数字

SQL> select to_char(78923489043209,'L999,999,999,999,999')
  2  from dual;

TO_CHAR(78923489043209,'L999,999,999,999,999')
------------------------------------------------------------
         ¥78,923,489,043,209

将数字 78923489043209 格式化为货币型数据显示

转日期函数

如果某一个字符串按照“日 - 月 - 年”的方式编写,那么可以将其自动转换为日期类型,也可以将指定格式的字符串转换为日期类型,该操作可以依靠 to_date() 函数完成

to_date( 字符串,转换格式 )

转换格式中的表示方法为年(yyyy) 、月(mm) 、日(dd) 、时(hh、hh24) 、分(mi) 、秒(ss) 

将字符串转换为日期

SQL> select to_date('1998-09-19','yyyy-mm-dd')
  2  from dual;

TO_DATE('1998-
--------------
19-9月 -98

转数字函数

该函数可以将字符串(由数字所组成)变为数字以便进行某些计算

to_number( 字符串 )

验证

SQL> select to_number('1')+to_number('2')
  2  from dual;

TO_NUMBER('1')+TO_NUMBER('2')
-----------------------------
                            3

类似前面所介绍的,Oracle 提供有数据类型的自动转换,使用下面代码可以同样实现这个效果

SQL> select '1' + '2'
  2  from dual;

   '1'+'2'
----------
         3

你可能感兴趣的:(Oracle从小白到总裁,数据库,oracle,sql)