SQL 基础-- 常用函数

分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow

也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!

               

--==================================

--SQL 基础-->常用函数

--==================================

/*

一、函数的分类

    SQL函数一般分为两种

    单行函数 基于单行的处理,一行产生一个结果

    多行函数 基于多行的处理,对多行进行汇总,多行产生结果

 

二、函数形式

    function_name [(arg1, arg2,...)]

 

三、常用的单行函数:

 1. 字符函数:

    lower(x)   转小写

   

    upper(x)   转大写

   

    initcap(x) 单词首字母转大写

   

    concat(x,y)   字符连接与| | 功能类似

   

    substr(x,start [,length])   取子串

        格式: substr('asdfasdfasdfasddf',1,3)

   

    length(x)  取字符串长度

   

    lpad | rpad(x,width [,pad_string]) 字符定长,(不够长度时,左|右填充)

 

    trim([trim_charFROM] x)  删除首部、尾部字符

         格式:trim('h' from 'hello hello')

        trim 默认删除方式是both

        leading   只删首部   trim(leading 'h' from 'hello helloh')

        trailing  只删尾部   trim(trailing 'h' from 'hello helloh')

        

    ltrim(x[,trim_string])  x右边删除字符  等价于使用trailing

    rtrim(x[,trim_string])  x左边删除字符  等价于使用leading

        

    instr   返回子字符串在字符串中的位置

         格式:instr(string,substring,position,occurence)

   

    replace(x,search_string,replace_string)   字符替换

        格式:replace('字符', '字符' ,'字符')

         将字符中的字符,替换成字符

 

2.  数值函数:

    round(x [,y])      四舍五入

    trunc(x,[,y])       截断

    mod(m,n)            求余

    ceil(x)                 返回特定的最小数(大于等于x的最小整数)

    floor(x)            返回特定的最大数(小于等于x的最大整数)

 

 

3.  日期函数:

    sysdate    返回系统当前日期

       

    实际上ORACLE内部存储日期的格式是:世纪,年,月,日,小,分钟,秒。

    不管如何输入都这样

    9i开始,默认的日期格式是:DD-MON-RR,之前是DD-MON-YY

    RR YY 都是世纪后的两位,但有区别

    ORACLE的有效日期范围是:公元前年月日-年月日

 

 

    RR日期格式:

      1、如果当前年份最后两位是:-,并且指定年份的最后两位也为-,

        则返回本世纪

       例:当前年:, 01--,表示2008

      2、如果当前年份最后两位是:-,指定年份最后两位为50

        则返回上世纪。

       例:当前年:,01--,表示1998

 

      3、如果当前年最后两位为:-,指定年份最后两位为0-,

        则返回下世纪。

       例:当前年:,--表示的是年

 

      4、如果当前年最后两位是:-,指定年份最后两位为:-

        则返回本世纪。

       例:当前年:,--表示的是年

 

 

    months_between(xy 两个日期之间相差的月数

       例:查询最近个月入职的员工

 

    add_months(x,y)      返回x上加上y个月后的结果

   

    last_day(x)           返回指定日期所在月最后一天的日期

   

    next_day(xday)    返回指定日期的下一day的时间值,day是一个文本串,比如SATURDAY

   

    extract       提取日期

       select extract(day from sysdate) from dual

       select extract(month from sysdate) from dual;

       select extract(year from sysdate) from dual;

   

 

 

4.  转换函数:

    TO_DATE(char[, 'format_model']) TO_DATE函数将一个字符串转换成日期格式

                                    函数有个fx 修饰语。这个修饰语为TO_DATE函数的字符函

                                    数中的独立变量和日期格式指定精确匹配.

   

    TO_CHAR(date, 'format_model')   转换为CHAR类型,

                                    必须与单引号一起嵌入,区分大小写,

                                用逗号把日期数值分开,有一个fm 移除填补空白或者阻止零开头

    TO_CHAR(number, 'format_model')

   

    TO_NUMBER(char[, 'format_model'])  TO_NUMBER 函数将一个字符串转换成一个数字格式:

   

    select to_date('1999-09-23','yyyy-mm-dd') from dual;

   

    数据类型的转换分为隐式数据类型转换和显式数据类型转换

   

    在表达式中, Oracle服务器能自动地转换下列各项,即隐式转换:

     VARCHAR2 or CHAR  =====NUMBER

     VARCHAR2 or CHAR  =====DATE

 

    对表达式赋值, Oracle服务器能自动地转换下列各项,即隐式转换:

    NUMBER =======VARCHAR2 or CHAR

    DATE   =======VARCHAR2 or CHAR

   

   

    日期格式元素:

       YYYY   数字年份

       YEAR   英文年份

   

       MM  数字月

       MONTH  英文月

       MON 英文缩写

   

       DD  数字日

       DY  英文缩写

       DAY 英文

 

 

5.  通用函数

    decode 条件判断

    格式:decode (col|expression,search1,result1 [,search2,result2,...] [,default])

       判断col|exporession的值,当search1匹配时,则返回,result1,

       search2匹配时,返回result2 ... 如果都不匹配,返回default

 

 

    select EMPNO,ENAME,JOB,SAL,

    decode(job,'CLERK',SAL*1.15,'SALESMAN',SAL*1.1,SAL*1.12) NEW_SAL

    FROM SCOTT.EMP;

 

    if then else  条件判断

    case 表达式

       CASE expr WHEN comparison_expr1 THEN return_expr1

                 [WHEN comparison_expr2 THEN return_expr2

                 WHEN comparison_exprn THEN return_exprn

                 ELSE else_expr]

       END

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值