### Oracle 常用函数及简单示例 Oracle 数据库提供了丰富的内置函数,这些函数能够帮助用户高效地处理数据、格式化输出等。本文将基于提供的部分内容介绍一些常用的 Oracle 函数及其应用示例。 #### 日期时间转换函数 1. **`TO_CHAR()`**:用于将日期或数字转换为指定格式的字符串。 - 示例: ```sql SELECT TO_CHAR(SYSDATE, 'YYYY-MM-DD HH12:MI:SS') AS NOW FROM DUAL; SELECT TO_CHAR(SYSDATE, 'YYYY-MM-DD HH24:MI:SS') AS NOW FROM DUAL; SELECT TO_CHAR(SYSDATE, 'HH12:MI:SS') AS NOW FROM DUAL; SELECT TO_CHAR(SYSDATE, 'YEAR MONTH DD DAY DY HH:MI:SS PM') AS NOW FROM DUAL; ``` 2. **`TO_DATE()`**:用于将字符串转换为日期。 - 示例: ```sql SELECT TO_DATE('20111009', 'YYYYMMDD') FROM DUAL; SELECT TO_DATE('20111009', 'YYYY-MM-DD') FROM DUAL; ``` 3. **`TO_NUMBER()`**:用于将字符串转换为数字。 - 示例: ```sql SELECT TO_NUMBER('20111009') FROM DUAL; ``` #### 数学函数 1. **`ROUND()`**:用于对数值进行四舍五入。 - 示例: ```sql SELECT ROUND(1029321.345, 0) FROM DUAL; ``` 2. **`TRUNC()`**:用于截断数值到指定的小数位数。 - 示例: ```sql SELECT TRUNC(1029321.345, 0) FROM DUAL; ``` 3. **`MOD()`**:返回两个数值相除后的余数。 - 示例: ```sql SELECT MOD(100, 3) FROM DUAL; ``` #### 日期操作函数 1. **`MONTHS_BETWEEN()`**:计算两个日期之间的月份数。 - 示例: ```sql SELECT MONTHS_BETWEEN(TO_DATE('20110910', 'YYYYMMDD'), TO_DATE('20111009', 'YYYYMMDD')) FROM DUAL; ``` 2. **`ADD_MONTHS()`**:在指定日期基础上增加指定的月份数。 - 示例: ```sql SELECT SYSDATE, ADD_MONTHS(SYSDATE, 10) AS LATE FROM DUAL; ``` 3. **`LAST_DAY()`**:返回指定月份的最后一日。 - 示例: ```sql SELECT LAST_DAY(SYSDATE) FROM DUAL; ``` 4. **`NEXT_DAY()`**:返回指定日期之后的第一个星期几的日期。 - 示例: ```sql SELECT NEXT_DAY(SYSDATE, 'SAT') FROM DUAL; ``` #### 字符串函数 1. **`UPPER()`**:将字符串转换为大写。 - 示例: ```sql SELECT UPPER('abc') FROM DUAL; ``` 2. **`LOWER()`**:将字符串转换为小写。 - 示例: ```sql SELECT LOWER('ABC') FROM DUAL; ``` 3. **`INITCAP()`**:将字符串首字母转换为大写,其余字母转换为小写。 - 示例: ```sql SELECT INITCAP('abc') FROM DUAL; SELECT INITCAP('ABC') FROM DUAL; ``` 4. **`LPAD()`** 和 **`RPAD()`**:分别用于左填充和右填充字符串。 - 示例: ```sql SELECT SALARY, LPAD(SALARY, 7, '$') AS NEWSAL FROM EMP_CK; SELECT SALARY, LPAD(SALARY, 7, 0) AS NEWSAL FROM EMP_CK; SELECT SALARY, RPAD(SALARY, 7, '$') AS NEWSAL FROM EMP_CK; SELECT SALARY, RPAD(SALARY, 7, 0) AS NEWSAL FROM EMP_CK; ``` #### 条件函数 1. **`CASE` 表达式**:根据不同的条件返回不同的结果。 - 示例: ```sql SELECT NAME, JOB, SALARY, CASE JOB WHEN 'ANALYST' THEN SALARY * 1.15 WHEN 'MANAGER' THEN SALARY * 1.10 WHEN 'CLERK' THEN SALARY * 1.05 ELSE SALARY END AS NEW_SALARY FROM EMP_CK; ``` 2. **`DECODE()`**:类似于 `CASE` 语句,但更加简洁。 - 示例: ```sql SELECT NAME, JOB, SALARY, DECODE(JOB, 'ANALYST', SALARY * 1.15, 'MANAGER', SALARY * 1.10, 'CLERK', SALARY * 1.05, SALARY) AS NEW_SALARY FROM EMP_CK; ``` 3. **`COALESCE()`**:返回第一个非 NULL 的表达式的值。 - 示例: ```sql SELECT NAME, SALARY, BONUS, COALESCE(BONUS, SALARY * 0.5, 100) AS SAL FROM EMP_CK; ``` 4. **`NVL()`**:如果第一个表达式为 NULL,则返回第二个表达式的值;否则返回第一个表达式的值。 - 示例: ```sql SELECT NVL(SALARY, 1) AS F, NVL(SALARY, 0) AS E FROM EMP_CK; ``` 以上是 Oracle 中一些常用函数的基本介绍及其示例,通过这些函数的应用可以极大地提高数据处理的效率和准确性。希望这些内容能帮助您更好地理解和使用 Oracle 数据库。
转换函数 to_char、to_number。to_date
数字函数 round 、trunc、mod
日期函数 months_between 、add_months、last_day、next_day、
通用函数 nvl、coalesce、decde
字符串函数 upper、lower、initcap、length、trim、replace
让日期按指定格式显示
select to_char(sysdate,'yyyy-mm-dd hh12:mi:ss') now from dual;
select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') now from dual;
select to_char(sysdate,' hh12:mi:ss') now from dual;
让日期按照全英文显示
select to_char(sysdate,' year month dd day dy hh:mi:ss pm') now from dual;
按照指定格式插入日期格式的数据,但还是和原来显示的效果是一样的
insert into emp_ck values(1012,’rose’,’Programmer’,5500,400,to_date(‘2011-10-09’,’yyyy-mm-dd’),1002,10);
coalesce函数(奖金,薪水*0.5,100)
作用:返回第一个非空参数
建议最后一个参数设为常量
参数可以是很多个
select name,salary,bonus,coalesce(bonus,salary*0.5,100) sal from emp_ck;
本语句的意思就是,把没有奖金的人的工资的一半当做奖金。
case and的形式
case job when 'Analyst'
then salary*1.15
when 'Manager'
then salary*1.10
when 'clerk'
then salary*1.05
else salary
end new_salary
from emp_ck;
本语句的意思是给每个职位加薪水用
还可以用oracle的函数decode
decode(列名,匹配条件1,取值1,
匹配条件2,取值2,
。。。。。
默认值)
select name,job,salary,decode(job,'analyst',salary*1.15,
'manager',salary*1.10,
'clerk',salary*1.05,
salary) newsalary
from emp_ck;
补齐函数
左补齐 lpad(字段,希望显示的位数,‘需要补的字符或数字’)
select salary,lpad(salary,7,'$') newsal from emp_ck;
select salary,lpad(salary,7,0) newsal from emp_ck;
剩余10页未读,继续阅读
- 粉丝: 0
- 资源: 47
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- C语言-leetcode题解之70-climbing-stairs.c
- C语言-leetcode题解之68-text-justification.c
- C语言-leetcode题解之66-plus-one.c
- C语言-leetcode题解之64-minimum-path-sum.c
- C语言-leetcode题解之63-unique-paths-ii.c
- C语言-leetcode题解之62-unique-paths.c
- C语言-leetcode题解之61-rotate-list.c
- C语言-leetcode题解之59-spiral-matrix-ii.c
- C语言-leetcode题解之58-length-of-last-word.c
- 计算机编程课程设计基础教程