zoukankan      html  css  js  c++  java
  • ORACLE 常用函数——转换函数

    ------------------------------------------类型转换函数----------------------------------------------
    --
    自动类型转换, ORACLE 可以自动根据具体情况进行如下转换:
    *字符串到数值
    *字符串到日期
    *数值到字符串
    *日期到字符串

    EX:

    --*字符串到数值
    SELECT '3.14159' + 20 FROM DUAL;

    SELECT '3.1T' + 20 FROM DUAL;  --报错:无效数字,即字符串必须能转换为数值类型才能进行操作


    --*数值到字符串
    SELECT '100' || 124 FROM DUAL;


    --1: TO_CHAR(DATE,'FORMAT')
    把对应的数据转换为字符串类型



    SELECT TO_CHAR(SYSDATE, 'YYYY-MM-DD HH24:MI:SS'FROM DUAL;

    SELECT TO_CHAR(SAL) FROM SCOTT.EMP;
     

    SELECT TO_CHAR(122323.45'$99999999.99'FROM DUAL;


    Y或YY或YYY 年的最后一位,两位或三位  
    SELECT TO_CHAR(SYSDATE, 'YYY'FROM DUAL;
    SELECT TO_CHAR(SYSDATE, 'YY'FROM DUAL;

    SYEAR或YEAR SYEAR使公元前的年份前加一负号
    SELECT TO_CHAR(SYSDATE, 'SYEAR'FROM DUAL;    --TWENTY ELEVEN


    Q 季度,
    1~3月为第一季度 
    SELECT TO_CHAR(SYSDATE, 'Q'FROM DUAL;        -- 2表示第二季度

    MM 月份数 
    SELECT  TO_CHAR(SYSDATE, 'MM'FROM DUAL;      --04表示4月 

    RM 月份的罗马表示 
    SELECT TO_CHAR(SYSDATE, 'RM'FROM DUAL;       --IV表示4月 

    Month 用9个字符长度表示的月份名 
    SELECT TO_CHAR(SYSDATE, 'MONTH'FROM DUAL;    -- 4月 

    WW 当年第几周 
    SELECT TO_CHAR(SYSDATE, 'WW'FROM DUAL;       -- 24表示2002年6月13日为第24周 

    W 本月第几周 
    SELECT TO_CHAR(SYSDATE, 'W'FROM DUAL;        -- 2011年04月26日为第4周 

    DDD 当年第几天. 1月1日为001,2月1日为032 
    SELECT TO_CHAR(SYSDATE, 'DDD'FROM DUAL;

    DD 当月第几天 
    SELECT TO_CHAR(SYSDATE, 'DD'FROM DUAL;

    D 周内第几天 
    SELECT TO_CHAR(SYSDATE, 'D'FROM DUAL;

    DY 周内第几天缩写 
    SELECT TO_CHAR(SYSDATE, 'DY'FROM DUAL;

    HH或HH12 12进制小时数
    SELECT TO_CHAR(SYSDATE, 'HH'FROM DUAL;

    HH24 24小时制 
    SELECT TO_CHAR(SYSDATE, 'HH24'FROM DUAL;

    MI 分钟数(
    059
    SELECT TO_CHAR(SYSDATE, 'MI'FROM DUAL;
    提示注意不要将MM格式用于分钟(分钟应该使用MI)。MM是用于月份的格式,将它用于分钟也能工作,但结果是错误的。

    SS 秒数(
    059
    SELECT TO_CHAR(SYSDATE, 'SS'FROM DUAL;
     

     
    --2:  TO_DATE(STRING,'FORMAT')
    将字符串转化为ORACLE中的一个日期


    SELECT  TO_DATE('2011-03-24''YYYY/MM/DD'FROM DUAL;   --格式化后依然为 2011-3-24, 很是纳闷,自己查资料解决这个问题

    SELECT TO_DATE('2011/03/24''YYYY-MM-DD'FROM DUAL;


    --3:  TO_NUMBER
    将给出的字符转换为数字

    SELECT TO_NUMBER('2008'AS Year FROM DUAL;




    --4:   RUNC(for number)
    按照指定的精度截取一个数
    TRUNC函数返回处理后的数值,其工作机制与ROUND函数极为类似,只是该函数不对指定小数前或后的部分做相应舍入选择处理,而统统截去。

      其具体的语法格式如下

      TRUNC(
    number[,decimals]

      其中:

      
    number 待做截取处理的数值

      decimals 指明需保留小数点后面的位数。可选项,忽略它则截去所有的小数部分

    SELECT TRUNC(314.14159234-2AS FirstNumber, TRUNC(314.14159234,2FROM DUAL;


    --5:    CHARTOROWID
    把包含外部格式的ROWID的CHAR或VARCHAR2数值转换为内部的二进制格式.参数string必须是包含外部格式的ROWID的18字符的字符串.
    oracle7和 oracle8中的外部格式是不同的.CHARTOROWID是ROWIDTOCHAR的反函数.



    SELECT ROWID, CHARTOROWID('adcddfADGEDGJGFRYJ'), ENAME FROM SCOTT.EMP;

    --6:  ROWIDTOCHAR
    将ROWID数据类型转换为字符类型
    将ROWID类型的数值rowid转换为其外部的18字符的字符串表示,在oracle7和oracle8之间有些不一样的地方. ROWIDTOCHAR和CHARTOROWID是两个相反的函数.

    SELECT ROWID,  ROWIDTOCHAR(ROWID), ENAME FROM SCOTT.EMP

    --7:  CONVERT(c,dset,sset)
    将源字符串 sset从一个语言字符集转换到另一个目的dset字符集


    SELECT CONVERT('? ê í ó ? A B C D E ''US7ASCII''WE8ISO8859P1')   FROM DUAL; 

     
    --8:HEXTORAW
    将一个十六进制构成的字符串转换raw
     
     
    SELECT HEXTORAW('324'FROM DUAL;


    --9: RAWTOHEX
    将RAW类数值rawvalue转换为一个相应的十六进制表示的字符串. rawvalue中的每个字节都被转换为一个双字节的字符串. RAWTOHEX和HEXTORAW是两个相反的函数.


    SELECT RAWTOHEX('11'FROM DUAL;
     

    --10:  TO_MULTI_BYTE
    将字符串中的单字节字符转化为多字节字符
    即将指定字符转换为全角并返回char类型字串 
    SELECT TO_MULTI_BYTE('ABC abc 中华'FROM DUAL;

    SELECT TO_MULTI_BYTE('AFDB'FROM DUAL;



    --11:    DUMP(s,fmt,start,length)
    DUMP函数以fmt指定的内部数字格式返回一个VARCHAR2类型的值
     dump是个功能非常强悍的函数,对于深入了解oracle存储的人而言相当有用。所以对于我们这些仅仅只是应用的人而言就不知道能将其应用于何处了。此处仅介绍用法,不对其功能做深入分析。

        如上所示,dump拥有不少参数。其本质是以指定格式,返回指定长度的exp的内部表示形式的varchar2值。fmt含4种格式:
    8||10||16||17,分别表示8进制,10进制,16进制和单字符,默认为10进制。
        start参数表示开始位置,length表示以,分隔的字串数。 
    例如:
    SELECT DUMP('abcdefg',17,2,4FROM DUAL; 


    --12:  EMPTY_BLOB()
    这两个函数都是用来对大数据类型字段进行初始化操作的函数


    --13:  EMPTY_CLOB()
    --
    ---------------------------------------------------------------------------------------------------------
    扫描上面二维码关注我
    如果你真心觉得文章写得不错,而且对你有所帮助,那就不妨帮忙“推荐"一下,您的“推荐”和”打赏“将是我最大的写作动力!
    本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接.
  • 相关阅读:
    【性能测试】二、TPS、QPS、RT和吞吐量这些都是什么?
    【性能测试】一、哪那么多概念,不就是这一条吗?
    【测试基础】九、如何做 API 测试?异步的呢?
    【测试基础】八、创建测试数据的时机
    【测试基础】七、你如何准备测试数据?
    【测试基础】六、做好测试计划需要注意这些
    【测试基础】五、这样提bug单,开发小哥还会怼你么?
    【测试基础】四、你的测试覆盖率是多少?
    【测试基础】三、为什么要做自动化测试?哪种项目合适?
    【测试基础】二、我好像真的不会设计“好的”测试用例
  • 原文地址:https://www.cnblogs.com/kerrycode/p/2031272.html
Copyright © 2011-2022 走看看