zoukankan      html  css  js  c++  java
  • ORACLE学习-2.单行函数

    oracle函数分为单行函数和多行函数,下面的图能很清楚的说明单行函数和多行函数:

    单行函数是指接收一个输入,返回一个输出包括 字符函数、数值函数、日期函数、转换函数和通用函数

    多行函数和单行函数相比,oracle提供了丰富的基于组的,多行的函数。这些函数能在select或select的having子句中使用,当用于select子串时常常都和GROUP BY一起使用。多行函数分为接收多个输入,返回一个输出

    一、单行函数

    1、字符函数

    1)、大小写控制函数

    /*转小写*/
    select lower('HELLOWORD') FROM DUAL;--helloword
    /*转大写*/
    select upper('helloword') FROM DUAL;--HELLOWORD
    /*首字母大学*/
    select initcap('hELLOword') FROM DUAL;--Helloword

    2)、字符控制函数

    /* 1、连接两个字符*/
    select concat('str1','str2') from dual;--str1str2
    
    /* 2、字符串截取,param1:要截取的字符串;param2:开始截取位置;param3:截取的个数*/
    select substr('helloword',1,5) from dual;--hello
    
    /* 3、判断字符串的长度*/
    select length('holleworld') from dual;--10
    
    /* 4、某一个字符串在另一个字符串中首次出现的位置,如果没有返回0*/
    select instr('helloword','dd') from dual;--0
    select instr('helloword','hello') from dual;--1
    
    /* 5、左对齐
    param1:填充的字符串
    param2:填充之后的字符串长度,也就是该函数返回的字符串长度,如果这个数量比原字符串的长度要短,
           lpad函数将会把字符串截取成从左到右的n个字符
    param3:填充字符串,是个可选参数,这个字符串是要粘贴到string的左边,如果这个参数未写,
           lpad函数将会在string的左边粘贴空格
    */
    select lpad('hello',10,'#') from dual;--#####hello
    
    /* 6、右对齐
    参数和左对齐的含义一样*/
    select rpad('hello',10,'#') from dual;--hello#####
    
    /* 7、将一个字符从另一个字符中移除*/
    select trim('H' from 'HELLOWORLD') from dual;--ELLOWORLD
    select trim('A' from 'HELLOWORLD') from dual;--HELLOWORLD
    select trim('H' from 'HELLOHWORLDH') from dual;--ELLOHWORLD
    
    /* 8、替换函数
    replace(param1,param2,param3),将param1中的param2替换成param3,将所有的param2都替换成param3
    */
    SELECT REPLACE('helloword','o','O') FROM DUAL;--hellOwOrd

    2、数字函数

    /* 1、四舍五入*/
    select round(123.456),round(123.556),round(123.456,2),round(435.45,-2),round(435.45,-5),round(435.45,5) from dual;
    --123   124    123.46    400    0     435.45
    
    /* 2、截断
    param1为必要参数,是输入的一个日期值
    param2参数可忽略,是日期格式
    */
    /*1>、截取时间到年时,yyyy也可用year替换*/
    select trunc(sysdate,'yyyy') from dual;  --2018/1/1
    
    /*2>、截取时间到月时*/
    select trunc(sysdate,'mm') from dual;--2018/4/1
    
    /*3>、截取时间到日时*/
    select trunc(sysdate,'dd') from dual;--2018/4/28
    
    /*4>、截取时间到小时时*/
    select trunc(sysdate,'hh') from dual;--2018/4/28 9:00:00
    
    /*5>、截取时间到分钟时*/
    select trunc(sysdate,'mi') from dual;--2018/4/28 9:48:00
    
    /* 3、求余
     mod(nExp1,nExp2),即是两个数值表达式作除法运算后的余数
    */
    select mod(10,3) from dual;--1

    3、日期函数

    1)、在日期上加上一个数或者减上一个数仍为日期;

    2)、两个日期相减返回之间相差的天数,日期不允许做加法(没意义);

    3)、用数字除24向日期中加上或者减上天数;

    /*日期函数*/
    select sysdate,sysdate+1,sysdate-3 from dual;
    --2018/4/28 9:58:37
    --2018/4/29 9:58:37
    --2018/4/25 9:58:37
    
    /*判断两个日志之间相差的月份*/
    select months_between(sysdate,sysdate-35) from dual;--1.12903225806452
    
    /*向指定的日期中加上若干个月*/
    select add_months(sysdate,2),add_months(sysdate,-3) from dual;
    --2018/6/28 10:03:05
    --2018/1/28 10:03:05
    
    /*当前日期开始得到到未来星期数的日期*/
    select sysdate,next_day(sysdate,'星期日'),next_day(sysdate,'星期二'),next_day(sysdate,'星期六') from dual;
    --2018/4/28 10:07:30
    --2018/4/29 10:07:30
    --2018/5/1 10:07:30
    --2018/5/1 10:07:30
    
    /*获取本月的最后一天*/
    select last_day(sysdate) from dual;
    
    /*其它日期处理*/
    select round(sysdate,'month'),round(sysdate,'mm') from dual;--'month'和'mm'一样
    --2018/5/1     2018/5/1
    select round(sysdate,'year') from dual;--2018/1/1
    select sysdate,trunc(sysdate,'year'),trunc(sysdate,'month') from dual;
    --2018/4/28 10:12:26 
    --2018/1/1
    --2018/4/1

    4、转换函数

    分为隐式转换和显示转换,如图:

    隐式类型转换:oracle自动完成下列的转换

    源数据类型 目标数据类型
    varchar2 or char number
    varchar2 or char date
    number varchar2
    date varchar2

     

     

     

     

    date  <======>varchar2<======>number

    例如:

    select '12'+2 from dual;--14
    select sysdate+2 from dual;--2018/4/30 10:19:20
    select 123,123,123.24+2 from dual;---123   123  125.24

    显示类型转换:

    /*char和date之间的转换*/
    SELECT TO_CHAR(SYSDATE,'YYYY-MM-DD') FROM DUAL;--2018-04-28
    SELECT TO_DATE('2018-04-28','YYYY-MM-DD') FROM DUAL;--2018/4/28
    SELECT TO_DATE('2018-04-28','YYYY/MM/DD') FROM DUAL;--2018/4/28
    SELECT TO_char(sysdate,'YYYY"年"MM"月"DD"日"') FROM DUAL;--2018年04月28日
    
    /*char和number之间的转换*/
    SELECT TO_CHAR(1234567.89,'999,999,999.99') FROM DUAL;--1,234,567.89
    SELECT TO_CHAR(1234567.89,'000,000,99.99') FROM DUAL;--012,345,67.89
    SELECT TO_CHAR(1234567.89,'000,000,999.99') FROM DUAL;-- 001,234,567.89
    SELECT TO_CHAR(1234567.89,'$00,000,999.99') FROM DUAL;-- $01,234,567.89
    /*(本地的钱符号)*/
    SELECT TO_CHAR(1234567.89,'L00,000,999.99') FROM DUAL;--¥01,234,567.89

    to_char()函数对数字的转换过程中,下面是to_char()函数经常用到的几种格式:

    9 数字
    0
    $ 美元
    L 本地货币符号(用local理解)
    . 小数点
    , 千位符号

    to_number('¥001,234,567,89','L000,000,99.99')可以做运算,我想如果你在美国,就要将¥换成$了;

  • 相关阅读:
    谈Delphi编程中“流”的应用 (一)
    Ihtmldocument2接口的使用
    TWebBrowser 异常 invalid floating point operation
    万一的 Delphi 博客 (注意 delphi的新功能)
    正则表达式应用(一)
    查询数据库所有表所有字段的某个值,生成更新代码 (VB)
    正则表达式应用(二)
    让程序支持脚本
    查探对方是否加你为好友
    常用的一些批处理,脚本功能(一)
  • 原文地址:https://www.cnblogs.com/hjwq/p/8966380.html
Copyright © 2011-2022 走看看