Oracle函数

前言:

                  概念:

                         是oracle提供的进一步修饰或者处理数据的方法

                  使用:

                         直接使用

                  分类:

                         字符函数

                          数值函数

                         

单行函数:

                    字符函数:select 字段名,函数名(字段名),字段名...from 表名

                     特点:1.不改变数据只是对数据进行修饰

                              2.可以和字段混合使

        ---查看所有的员工信息,员工姓名小写lower(0函数
        select empno,lower(ename),job from emp;
        select ename,'HH' from emp;
        --- 查看表中所有员工的姓名首字母大写的信息  INITCAP()函数
        select empno,INITCAP(ename),job from emp;

数值函数:(对数值类型的数据进行运算)

              伪表:不是真实存在的表,是为了方便数据验证临时存在的表(dual表为伪表名)                         

日期函数:

多行函数:(max,min,avg,sum,count)

              作用:

                      对查询的数据进行统计

              使用:

                     select 多行函数名(字段名),多行函数名(字段名)........from 表名

               注意:

                      多行函数不能喝普通的字段以及单行函数连用,除非分组

                max(字段名)   返回该字段的最大值

                min(字段名)   返回该字段的最小值

                sum(字段名)  返回该字段的和

                 count

                                count(*)返回表中的记录数

                                 count(字段名)  返回非空值得数量

                                  count(distinct)

 ---多行函数学习(max,min,avg,sum,count)
        --查询员工的最低工资
        select min(sal) from emp;
        --查看员工的平均工资
        select avg(sal) from emp;
        -- 查看所有员工的工资之和
        select sum(sal) from emp;
        -- 查询公司多少员工
        select count(*) from emp;
        -- 查看需要津贴的员工人数
        select count(comm) from emp;
        -- 查询公司有多少工作种类
        select distinct job from emp;
        select count(distinct job) from emp;
        select count(*),sum(sal),avg(sal),max(sal) from emp;

                

-----------------------字符和数值的互转-------------------------------------
-----字符串转换
        ---指定显示格式
        ---$表示位置占位,列入999,999,999会将数字按照三个一个组用哪个逗号隔开
        ---L表示人民币,$为美刀
        --- 0也可以表示占位,但是如果真实数据位数不足,会使用0进行占位
        select to_char(12345,'$999,999,999') from dual;
        select to_char(12345,'L999,999,999') from dual;
        ---查看工资大于2000的员工信息
        ----数值和字符之间的转换可以隐式转换,to_number可以省略不写
        select * from emp where sal>to_number('2000');
        select * from emp where sal>'2000';
---------------------日期和字符之间的互转----------------------------------
----字符转换成日期char---->date
     --使用to_date('要转换的字符,日期格式')函数把字符转化成日期
     --注意1:字符必须符合日期合适
     --注意2:oralce默认的转化格式为日月年,例如:'01-1月-1982
     --常用日期格式yyyy--mm--dd
     --查询员工入职日期在82年以后的
     select * from emp where hiredate>to_date('1982-01-01','yyyy-mm-dd');
----日期转化成字符
    ----使用:
         ----新增数据使用to_date()
         ---查询数据使用to_char()
    ---常见格式:
        ----yyyy-mm-dd
        ---yyyy/mm/dd
        ---yyyy"年"mm"月"dd"天"
    ---使用to_char('要转化的日期')
    select to_char(hiredate) from emp;---使用默认格式把日期转化成字符
    select to_char(hiredate,'yyyy-mm-dd') from emp;----使用指定的格式转化
    select to_char(hiredate,'yyyy"年"mm"月"dd"日"') from emp;
 --------------------------------其他函数--------------------------------------
 ---nvl(字段名,新的值): 如果字段名为null,则返回该字段的值,否则返回新的值
 ---nvl2(字段名,处理1,处理2):如果字段值不为bull,执行处理1,fouze执行处理2
 ---decode(字段名,值1,处理1,值2,处理2,值3,处理3,处理4)if elseif else
 ---查询员工的工资信息
 select ename,job,sal from emp;
 ---查询员工的薪水
 select ename,job,sal+nvl(comm,0) from emp;
 select ename,job,sal+nvl2(comm,sal+comm,sal) from emp;
 --- 显示员工的职称
 select ename,job,decode(job,'MANAGER','经理','SALESMAN','销售','普通员工') from emp;

 

 

 

### Oracle 数据库函数使用说明与示例 #### 1. 基础概念 Oracle 函数是一种 PL/SQL 块,能够执行特定的计算或操作并返回值。可以通过 `CREATE OR REPLACE FUNCTION` 创建自定义函数,并通过 SQL 或 PL/SQL 进行调用[^4]。 #### 2. 字符串处理函数 字符串处理函数在数据清洗和格式化中非常常见。以下是几个常用的字符串处理函数及其示例: - **REPLACE** 将指定子字符串替换为另一个字符串。如果未找到匹配项,则返回原始字符串。 ```sql SELECT REPLACE('Hello, World!', 'World', 'Oracle') AS result FROM dual; -- 输出: Hello, Oracle! ``` - **SUBSTR** 提取字符串的一部分,基于起始位置和长度。 ```sql SELECT SUBSTR('Hello, Oracle!', 8, 7) AS result FROM dual; -- 输出: Oracle! ``` - **INSTR** 返回子字符串首次出现的位置。如果没有找到子字符串,则返回 0。 ```sql SELECT INSTR('Hello, Oracle!', 'Oracle') AS position FROM dual; -- 输出: 8 ``` #### 3. 数学运算函数 数学函数用于数值计算,支持四舍五入、绝对值等操作。 - **ROUND** 对数字进行四舍五入到指定位数。 ```sql SELECT ROUND(123.456, 2) AS rounded_value FROM dual; -- 输出: 123.46 ``` - **ABS** 计算给定数字的绝对值。 ```sql SELECT ABS(-123.456) AS absolute_value FROM dual; -- 输出: 123.456 ``` #### 4. 聚合函数 聚合函数用于对一组记录进行统计分析。 - **AVG** 计算某一列的平均值。 ```sql SELECT AVG(salary) AS average_salary FROM employees; ``` - **COUNT** 统计满足条件的行数。 ```sql SELECT COUNT(*) AS total_employees FROM employees WHERE department_id = 10; ``` - **SUM** 计算某一列的总和。 ```sql SELECT SUM(salary) AS total_salary FROM employees; ``` #### 5. 自定义函数示例 创建一个简单的自定义函数来计算两个整数之和: ```sql CREATE OR REPLACE FUNCTION add_numbers (num1 NUMBER, num2 NUMBER) RETURN NUMBER IS result NUMBER; BEGIN result := num1 + num2; RETURN result; END; / SELECT add_numbers(10, 20) AS sum_result FROM dual; -- 输出: 30 ``` #### 6. 错误处理注意事项 在使用聚合函数时需要注意分组规则。例如,在 `GROUP BY` 子句中使用的列必须显式声明,或者作为聚合函数的结果存在[^5]。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值