oracle中的类型转换

一、oracle中的类型转换关系

在这里插入图片描述

  • 字符串可以转换成数字
  • 数字可以转换成字符串
  • 字符串可以转换成日期
  • 日期可以转换成字符串
  • 数字不能转换成日期
  • 日期不能转换成字符串

二、数字转换成字符串to_char

  • 使用格式化字符串9,999.99转换

    格式化字符串中,可以加逗号和小数点,逗号为数字分割符,小数点后面的位数为保留的小数:

11:43:13 SCOTT@vbox88in*SQL>select to_char(123456.78,'999999999.999') FROM DUAL;

TO_CHAR(123456.78,'9999
------------------------
           123456.780

  当格式化字符串中小数点后面的位数小于要转换的数字的小数点位数时,会进行四舍五入;相反,若不足则会在要转换的数字的小数点后面补零。

12:31:24 SCOTT@vbox88in*SQL>select to_char(999.78,'999,999.9') from dual;

TO_CHAR(99
----------
     999.8

  如果格式化字符串小数点前面的位数要比待转换的整数位数小时,转换结果将会是乱码:

12:38:21 SCOTT@vbox88in*SQL>select to_char(999.78,'99.9') from dual;

TO_CH
-----
#####
  • 转换时使用特殊符号

    转换时还可以加一些特殊符号来显示不同的转换效果,比如格式化字符串前面加L会显示本地的货币符号:
12:41:09 SCOTT@vbox88in*SQL>select to_char(999.78,'L999,999,999.99') from dual;

TO_CHAR(999.78,'L999,999,
-------------------------
                ¥999.78

  再比如我们可以使用字符G和D来代替分号和小数点的作用:

12:48:43 SYS@vbox88in*SQL>select to_char(999.78,'L999G999G999D99') from dual;

TO_CHAR(999.78,'L999G999G
-------------------------
                ¥999.78

  特殊符号G和D的定义可以参考变量nls_numeric_characters:

12:51:37 SYS@vbox88in*SQL>show parameter nls

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
nls_calendar                         string      GREGORIAN
nls_comp                             string      BINARY
nls_currency                         string      ¥
nls_date_format                      string      YYYY-MM-DD HH24:MI:SS
nls_date_language                    string      SIMPLIFIED CHINESE
nls_dual_currency                    string      ¥
nls_iso_currency                     string      CHINA
nls_language                         string      SIMPLIFIED CHINESE
nls_length_semantics                 string      BYTE
nls_nchar_conv_excp                  string      FALSE
nls_numeric_characters               string      .,
nls_sort                             string      BINARY
nls_territory                        string      CHINA
nls_time_format                      string      HH.MI.SSXFF AM
nls_time_tz_format                   string      HH.MI.SSXFF AM TZR
nls_timestamp_format                 string      yyyy-mm-dd HH24:MI:SSXFF
nls_timestamp_tz_format              string      yyyy-mm-dd HH24:MI:SSXFF  TZR
  • 使用格式化字符串0,000.00转换

    使用格式化字符串0,000.00进行转换时和9类似,但是不同之处在于,如果待转换的数字位数不够时会在前面补零:
12:55:36 SYS@vbox88in*SQL>select to_char(999.78,'L000G000G000D00') from dual;

TO_CHAR(999.78,'L000G000G
-------------------------
        ¥000,000,999.78

三、字符串转数字to_number

  字符串转数字时比较简单,我们可以直接转换:

12:58:13 SYS@vbox88in*SQL>select to_number('123.456') from dual;

TO_NUMBER('123.456')
--------------------
             123.456

  也可以在转换时加入格式化字符串:

13:01:35 SYS@vbox88in*SQL>select to_number('¥123.456','L9999.9999') from dual;

TO_NUMBER('¥123.456','L9999.9999')
-----------------------------------
                            123.456

四、日期转字符串

13:21:47 SYS@vbox88in*SQL>select to_char(sysdate,'YYYY-MM-DD HH24:MI:SS DAY') from dual;

TO_CHAR(SYSDATE,'YYYY-MM-DDHH24:
--------------------------------
2019-11-15 13:21:48 星期五

五、字符串转日期

13:24:48 SYS@vbox88in*SQL>select to_date('2019-11-15 星期五','YYYY-MM-DD DAY') from dual;

TO_DATE('2019-11-15
-------------------
2019-11-15 00:00:00
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值