Oracle - 函数

简介: Oracle - 函数一、单行函数1、单行函数的特点:    > 操作数据对象    > 接收参数返回一个结果    > 只对一行进行变换    > 每行返回一个结果    > 可以转换数据类型...
Oracle - 函数

一、单行函数
1、单行函数的特点:
    > 操作数据对象
    > 接收参数返回一个结果
    > 只对一行进行变换
    > 每行返回一个结果
    > 可以转换数据类型
    > 可以嵌套
    > 参数可以是一列或一个值

2、按函数的作用分类:
    > 字符
        > 大小写控制函数
            > lower():将传入的字符串全部转换为小写返回
            > upper():将传入的字符串全部转换为大写返回
            > initcap():将传入字符串 按空格分成若干个单词,每个单词首字母大写
        > 字符控制函数
            > concat(str1, str2):将传入的两个字符串拼接成一个字符串
            > substr(str, 1,5):截取字符串str的[1,5]个字符,组成一个新的字符串,字符串下标从1开始
            > length(str):返回字符串的长度
            > instr(str, char):返回字符串str中char字符第一次出现的下标
            > lpad(' Hello ', 10, ' * '):左侧填充,效果为 ' *****Hello '
            >  rpad(' Hello ', 10, ' * '):右侧填充,效果为 ' Hello***** '
            > trim(' H ' from ' Hello '):去掉字符串Hello的H字符,去掉后的效果是:' ello '
            > replace(str, char1, char2):将字符串 str 中的 char1字符改为 char2字符
    > 数值
        > round(double number, int n):四舍五入,并保留小数点后 n位
        > trunc(double number, int n):截断,意思就是保留小数点后 n位
        > mod(100, 30):求余,100 % 30 =  10

    > 日期(Oracle中的日期其实包含日期和时间两个值)
        > 日期表示:年(yyyy)、月(mm)、日(dd)、星期(day)、小时(hh)、分钟(mi)、秒(ss)

        >  months_between(‘01-SEP-95’,‘11-JAN-94’):两个日期相差的月数,结果为:19.6774194
        > add_months(‘11-JAN-94’,int n):向指定的日期中添加 n个月,n=6时:‘11-JVL-94’
        > next_day(‘11-JAN-94’,‘FRIDAY’):指定日期的下一个星期对应的日期,‘18-JAN-94’
        > last_day(‘11-JAN-94’):本月的最后一天,结果为:‘30-JAN-94’
        > round():日期四舍五入
            > round(‘26-JVL-94’,‘MONTH’):按月四舍五入,结果为:‘01-AUG-94’
            > round(‘26-JVL-94’,‘YEAR’):按年四舍五入,结果为:‘01-JAN-95’
        > trunc():日期截断
            > trunc(‘26-JVL-94’,‘MONTH’):按月截断,结果为:‘01-JVL-94’
            > trunc(‘26-JVL-94’,‘YEAR’):按年截断,结果为:‘01-JAN-94’

    > 转换
        >  隐示数据类型转换
            > varchar2 or char     ==>   number
            > varchar2 or char     ==>   date
            > number                   ==>   varchar2
            > date                        ==>   varchar2
        > 显示数据类型转换
            > to_char(date,‘字符格式’):对date到char的转换,①日期必须包含在单引号中而且大小写敏感
               ②可以包含任意的有效的日期格式、③日期之间用逗号隔开、④使用双引号向日期中添加字符
            > to_date(char,‘日期格式’):对char到date的转换,将字符格式的时间转换为时间格式
            > to_number(char, '数字格式'):对char到number的转换,比如将char中的‘¥’转换为‘L’
            > to_char(number,‘字符格式’):对number到char的转换,这里经常使用的几种格式为:
               数字(9)、零(0)、美元符($)、本地货币符号(L)、小数点(.)、千位符(,)

    > 通用:这些函数适用于任何数据类型,包括空值
        >  nvl(expr1, expr2):如果expr1是空值,则将其转换为expr2中的值,可以使用的数据类型有:
           日期、字符、数字
        > nvl2(expr1, expr2, expr3):expr1 不为null,返回expr2,为null,返回expr3
        > nullif(expr1, expr2):相等返回null,不等返回expr1
        > coalesce(expr1, expr2, ..., exprn):它的优点是,可以同时处理交替的多个值,如果第一个表达式
           为null,则返回下一个表达式,对其他参数进行 coalesce

3、条件表达式:在SQL中使用 if - then - else 逻辑,使用两种方法:case表达式、decode函数
> case 表达式:
 select 字段a, 字段b,
  case id  where id=10  then return_name1 
              where id=10   then return_name2
              else return_name2
  end     "起一个别名"
 from tablename;

> deocode 函数
 select 字段a, 字段b,
            decode(id,  '10',   return_name1,
                              '20'    return_name2,
                              '30'    return_name3,
                         return_name4)
           "起一个别名"
 from tablename;
含义:如果id为10,返回return_name1,如果id为20,返回return_name2,如果id为30,返回return_name3,
           其他则返回return_name4

4、嵌套函数:多行函数可以嵌套,嵌套函数的执行顺序是由内到外

二、组函数
1、组函数类型:
    > avg():求一组数的平均值,只能针对数值类型
    > count(expr):返回expr不为空(NULL)的个数
        > count(distinct expr):返回expr非空,且不重复的记录总数
    > max():最大值,也可以比较字符大小,按ASCII码比较
    > min():最小值
    > stddev():
    > sum():总和,只能针对数值类型
    > avg(money) = sum(money) / count(money)

2、非法使用组函数:
    > 不能在 where 子句中使用组函数
    > 可以在 having 子句中使用组函数

相关文章
|
15天前
|
SQL Oracle 关系型数据库
[Oracle]面试官:你举例几个内置函数,并且说说如何使用内置函数作正则匹配
本文介绍了多种SQL内置函数,包括单行函数、非空判断函数、日期函数和正则表达式相关函数。每种函数都有详细的参数说明和使用示例,帮助读者更好地理解和应用这些函数。文章强调了字符串操作、数值处理、日期计算和正则表达式的使用方法,并提供了丰富的示例代码。作者建议读者通过自测来巩固学习成果。
13 1
[Oracle]面试官:你举例几个内置函数,并且说说如何使用内置函数作正则匹配
|
4月前
|
SQL Oracle 算法
|
4月前
|
SQL Oracle 关系型数据库
|
4月前
|
SQL Oracle 关系型数据库
Oracle|内置函数之INSTR
【7月更文挑战第5天】
|
4月前
|
Oracle 关系型数据库 数据挖掘
|
6月前
|
SQL Oracle 关系型数据库
JAVAEE框架数据库技术之12_oracle常用函数和高级查询子查询
JAVAEE框架数据库技术之12_oracle常用函数和高级查询子查询
112 0
JAVAEE框架数据库技术之12_oracle常用函数和高级查询子查询
|
4月前
|
Oracle 关系型数据库 数据挖掘
|
6月前
|
存储 Java 数据库
JAVAEE框架数据库技术之13_oracle 之PLSQL技术及存储过程和函数(二)
JAVAEE框架数据库技术之13_oracle 之PLSQL技术及存储过程和函数
76 0
|
5月前
|
存储 Oracle NoSQL
Oracle中decode函数详解
Oracle中decode函数详解
|
5月前
|
Oracle 关系型数据库 大数据
oracle递归函数
oracle递归函数