zoukankan      html  css  js  c++  java
  • oracle 中sql语句的几个基本函数..

    今天学习了 sql语句中几个基本的函数,

    1、sysdate ----查询当前数据库系统时间 

    select sysdate from dual;------ 其中dual是Oracle自带的一张虚拟表,没有任何意义,为了保证sql语句的完整性。

    2. round(列|值|表达式,小数的有效位数) 表示四舍五入 

       trunc(列|值|表达式,小数的有效位数)  直接截取有效位数

    如:

    --将值2784.342933精确到小数点后3位,不四舍五入
    select trunc(2784.342933,3) from dual;
    --将值2784.642933精确到整数,2784
    select trunc(2784.342933,0) from dual;
    --将值2784.342933精确到整数十位,2780
    select trunc(2784.342933,-1) from dual;
    --将值2784.342933精确到整数百位,2800
    select round(2784.342933,-2) from dual;

    3.mod(列|值,列|值) 求余数 

    如:

    --求5/2的余数
    select mod(5,2) from dual;

    4.abs(列|值) 求绝对值

    --求-2的绝对值
    select abs(-2) from dual;

    字符串函数:

    1.length(列|值|表达式);求长度

    --获取员工表中员工名字及其名字长度
    select
    first_name,length(first_name)
    from
    s_emp;

    2.upper(列|值|表达式);全部转大写字母

    lower(列|值|表达式);全部转小写字母
    initcap(列|值|表达式);每个单词首字母大写

    select upper('abc')from dual;==>ABC
    select lower('ABC')from dual;==>abc
    select initcap('hello world')from daul;==>Hello World

    例子:查询ben的工资
    select salary from s_emp where lower(first_name) = lower('ben');

    3.lpad(列|值,宽度,填充字符);从左边补不足宽度个填充字符

    rpad(列|值,宽度,填充字符);从右边补不足宽度个填充字符

    select rpad('abc',10,'de')from dual;
    ------------------
    abcdededed

    select lpad('abc',10,'de')from dual;
    ----------------
    dedededabc

    4.ltrim(列|值,截取字符);从左边截取字符

    rtrim(列|值,截取字符);从右边截取字符

    select rtrim('abcdedede','de') from dual;
    ------------
    abc
    select rtrim('abcddedede','de') from dual;
    --------------
    abc --表示从右边开始截取de|d|e,直到不同于截取字符的字符为止

    5.

    replace(列|值,被置换的字符,置换的字符);置换指定字符

    select replace('helloworld','owo','***')from dual;==》hell***rld

    6.

    translate(参数一,参数二,参数三);转换指定字符
    参数一:要处理的内容,列|值
    参数二:要检索的内容
    参数三:检索后,与检索内容一一对应替换的内容(如果无替换值,则全部去掉)

    select
    translate('He1l20l4o W65o75rl4d765!',
    'abcdefghijklmnopqrstuvwxyz0123456789',
    'abcdefghijklmnopqrstuvwxyz')
    from dual;

    7.

    instr(要查询的字符串,希望查询的字符串,从什么位置开始,第几次出现)查找指定字符串中所在的位置下标    参数三 正数表示从左往右,负数表示从右往左
    select instr('go,go,come on!','go',1,2)from dual;

    注意:数据库字符串下标从1开始计数。

    8.

    substr(列|值,指定位置下标,保留几位)
    select substr('hello world!',3)from dual;表示:从指定下标处开始获取字符。

    select substr('hello world!',3,4)from daul;表示:从3号坐标开始获取,保留四个长度

    9.

    decode()
    a.类似一个三目运算符:(表达式?a:b)如果表达式为true,取a;如果表达式为false,取b
    比较第一和第二个参数,如果相等取第三个参数,如果不相等取第四个参数。

    decode(A,b,c,d,e,f,g,h,i,j)

    如果A=b,输出c;
    如果A=d,输出e;
    如果A=f,输出g;
    如果b,d,f都不满足A,输出h.

    --输出显示每个订单编号及支付方式,支付方式要么是现金,要么是信用卡,否则就是未知数。
    select id,decode(payment_type,'CASH','现金','CREDIT','信用卡','未知数' )
    from s_ord;

    10.

    case when 可以把它看成switch功能;


    select name 部门名,
    case region_id
    when 1 then '北美'
    when 2 then '南美'
    when 3 then '中东'
    when 4 then '亚洲'
    when 5 then '欧洲'
    else '未知区域'
    end "区域名"
    from s_dept;

    注意:case后面是否出现列名,取决于when后面条件是否出现比较列
    如果when后面已经出现列名,那case后面务必不能写列名,
    如果when后面是值,那么必须在case后面指定列名,否则无法确定所给的值的真正含义

    日期函数 

    oracle默认的日期格式为 dd-MON-yy
    select sysdate from daul;

    dd 表示2位数的日
    mon/month 表示月份,如:6月
    mm 表示2位数的月,如:06
    yyyy 表示4位数的年份
    HH24 表示24小时
    HH 表示12小时
    mi 表示分钟
    ss 表示秒
    fm 表示去掉前面的0,如:fm 06,值为6
    day 表示星期几

    1.

    months_between(date1,date2) 2个日期之间的月数
    --查询2014年11月1日和2016年12月9日之间的间隔月数
    select trunc(abs(months_between(to_date('2014-11-1','yyyy-mm-dd'),to_date('2016-12-9','yyyy-mm-dd'))),0) from dual;

    2.

    add_months(date1,n) 在date1的基础上加n个月
    --半年后的日期是什么?
    select add_months(sysdate,6) from dual;

    3.

    next_day(date1,'星期几') 在date1的基础上,下星期几是什么时候
    --下一个星期五是几号?
    select next_day(next_day(sysdate,'星期五')) from dual;

  • 相关阅读:
    Android-Drawable
    DOM4J与JDOM解析xml文档
    SAX解析xml文档
    java中的xml简介与DOM解析xml
    二进制I/O
    java中的集合框架
    文本I/O
    Java中基本数据的包装类
    Sting 字符串类
    抽象类和接口
  • 原文地址:https://www.cnblogs.com/qianqian528/p/7774466.html
Copyright © 2011-2022 走看看