zoukankan      html  css  js  c++  java
  • Oracle数据库常用SQL函数

    1.SQL函数的概念:


    函数一般是在数据上执行的,它给数据的转换和处理提供了方便。只是将取出的数据进行处理,不会改变数据库中的值。(类似于java中的方法但函数只是将数据库中的数据取出(复制)到函数中进行运算,并不会修改数据库中的数据)

    2.Sql函数可以分为组函数和单行函数。


    –单行函数对单个数值进行操作,并返回一个值
    –组函数又被称作聚合函数,用于对多行数据进行操作,并返回一个单一的结果,组函数仅可用于选择列表或查询的having子句

    3.单行函数的分类:


    单行函数分为字符函数、数字函数、日期函数、转换函数和其他函数

    3.1.字符函数


    字符函数全以字符作为参数,返回值分为两类:一类返回字符
    值,一类返回数字值

    常用函数如下:
    1.concat(a,b) 拼接a,b两个字符串数据
    例:select concat(ename,job) from emp;
    如果需要拼接多个字符串可用concat()进行嵌套
    例:select concat(concat(ename,'的职位是'),job)from emp;
    2.initcap(x) 将每个单词的首字母转大写
    例:select initcap('ab cde') from dual;
    结果为Ab Cde
    其中dual是一个虚拟表
    3.lower() / upper() 将字符串小写/将字符串大写
    例:select lower('AbCde') from dual;
    结果为abcde
    select upper('AbCde') from dual;
    结果为ABCDE
    4.length() 获取字符串的长度
    例:select length('abcde') from dual;
    结果返回5
    5.lpad(a,b,c) /rpad(a,b,c) 将a字符串左边/右边填充至b长度,用c字符填充(默认为空格)
    6.ltrim(a,b) / rtrim() 去除a字符串左边的b字符,如果b不传参,默认去除空格
    7.replace(a,b,c) 将a中的b字符串替换为c
    8.substr(a,b,c) 将a的字符串,从b位置开始截取,截c个长度
    9.trim( a from b) 将b左右两边的a字符去除掉

    3.2.数字函数


    数字函数以number类型为参数返回number值
    常用函数:
    1.abs() 求取绝对值
    2.ceil() 向上取整
    3.floor() 向下取整
    4.round() 四舍五入
    5.power(x,y) x的y次幂

    3.3.日期函数


    Oracle以内部数字格式存储日期:世纪,年,月,日,小时,分钟,秒
    常用函数:
    1.sysdate 返回系统当前日期,注:没有括号
    2.add_months(d1,d2) 在d1日期上,增加d2个月份
    3.months_between(d1,d2) 返回d1和d2之间的相隔月份
    4.last_day(d) 返回d日期所在月份最后一天的日期
    5.next_day(d,X) 返回下一个星期X的日期

    3.4.转换函数


    转换函数提供了字符和数字的相互转换 &字符和日期的相互转换

    1.to_char() 将数字、或日期转化为字符串
    2.to_date() 将字符串转化为日期
    3.to_number() 将字符串转化为数字

    3.5.其他函数


    1.nvl(x,y) 如果x为null,则显示为y,x和y的类型保持一致
    2.sys_guid() 生成一个的32位随机字符串
    3.decode(条件,值1,翻译值1,值2,翻译值2,...值n,翻译值n,缺省值) 条件取值,类同java的switch(等值判断)
    4.case when then else end 条件取值,类同java的if-else-if(范围判断)
    select 列,case when 条件判断 then '值1'
    when 条件判断 then '值2'
    when 条件判断 then '值3'
    when 条件判断 then '值4'
    else '缺省值' end from 表;

    4.组函数


    组函数不处理空字段(忽略空字段)
    1.avg()求平均值,只能对数字类型进行处理
    2.sum()求和,只能对数字类型进行处理
    3.count()计数,对任何类型生效
    4.max() 求最大值,对任何类型生效
    5.min() 求最小值,对任何类型生效

    5.group by关键字(创建分组)


    5.1作用:
    对查询结果按指定列进行分组处理

    5.2用法:
    1.分组之后,select后面的列只能是group by 后面指定的列
    2.group by 后面可以跟多个列,则这多个列值都相同时,才分为一组
    3.如果分组列中具有null值,则null将作为一个分组返回
    4.分组之后,可以使用组函数对每个组进行数据处理
    5.Group by 子句必须出现在where子句之后,order by 子句之前
    例:select deptno from emp group by deptno rder by deptno desc

    6.having 关键字


    6.1作用:
    用于对分组数据进行过滤
    6.2用法:
    1.类似于where的用法, Where过滤行,having过滤分组
    2.having支持所有where中的操作符
    3.一般在使用group by 子句时,应该也给出order by子句

    7.Sql语句执行顺序(过程):


    1. 读取from子句中的基本表、视图的数据,[执行笛卡尔积操作]。
    2. 选取满足where子句中给出的条件表达式的元组
    3. 按group子句中指定列的值分组,同时提取满足Having子句中组条件表达式的那些组
    4. 按select子句中给出的列名或列表达式求值输出
    5. Order by子句对输出的目标表进行排序。

    注:sql的书写顺序为:
    select from where group by having order by [asc/desc]

    作者:ki16
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须在文章页面给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    MSIL实用指南-加载null、string、long、float、double等值
    MSIL实用指南-加载int值
    MSIL实用指南-IL版hello world
    中文编程语言Z语言开源正式开源!!!
    Lisp永远成不了编程主流语言
    TKT中文编程语言简介
    Anaconda+django写出第一个web app(八)
    Anaconda+django写出第一个web app(七)
    Anaconda+django写出第一个web app(六)
    Anaconda+django写出第一个web app(五)
  • 原文地址:https://www.cnblogs.com/gaojinshun/p/10732374.html
Copyright © 2011-2022 走看看