网站首页 > 技术文章 正文
1 SQL函数介绍
单行函数
- 操作数据对象
- 接受函数返回一个结果
- 只对一行进行变换
- 每行返回一个结果
- 可以转换数据类型
- 可以嵌套
- 参数可以是一列或一个值
2 DUAL 伪表
DUAL是一个‘伪表’,可以用来测试函数和表达式
获取当前时间:
select sysdate from dual
3. 字符函数
3.1 大小写控制函数
这类函数改变字符的大小写
select lower('HELLO') from dual -- 小写
select upper('hello world') from dual -- 大写
select initcap('hello world') from dual -- 首字母大写
3.2 字符控制函数
select concat('hello','world') from dual;--合并
select substr('helloworld',1,3) from dual;--截取
select length('helloworld') from dual;--长度
select instr('helloworld','w') from dual;--查找
4 数字函数
select round(45.0418,3) from dual
select trunc(45.0498,2) from dual
select mod(3,2) from dual
5 日期函数
Oracle 内部使用数字存储日期: 世纪,年,月,日,小时,分钟,秒。
默认的日期格式是DD-MON-RR.
–可以只指定年的后两位在20世纪存放21世纪的日期。
–同样可以在21世纪存放20世纪的日期
5.1 日期的数学运算
- 在日期上加上或减去一个数字结果仍为日期
- 两个日期相减返回日期之间相差的天数
SELECT last_name, (SYSDATE-hire_date)/7 AS WEEKS
FROM employees
WHERE department_id = 90
5.2 日期函数
select sysdate from dual
select e.*,sysdate-e.emp_birthday,(sysdate-e.emp_birthday )/7 from emp e
select months_between(sysdate,'01-1月-15') from dual
6 转换函数
6.1 隐式数据类型转换
select '123'+321 from dual--隐式
6.2 TO_CHAR函数对日期的转换
- 必须包含在单引号中而且大小写敏感。
- 可以包含任意的有效的日期格式。
- 可以使用fm去掉多余的空格或者前导零。
- 与日期指用逗号隔开。
TO_CHAR(date, 'format_model')
select to_char(sysdate,'yyyy-MM-dd HH24:mm:ss') from dual
6.3 TO_NUMBER
TO_NUMBER('123.45') 结果 123.45
TO_NUMBER('999,999.99') 结果 123,456.78
6.4 TO_DATE
select to_date(’2003-10-17 21:15:37’,’yyyy-mm-dd hh24:mi:ss’) from dual
select * from user_info where
user_time>to_date('2015-01-01','yyyy-MM-dd')
7 通用函数
这些函数适用于任何数据类型,同时也适用于空值:
NVL (expr1, expr2)
NVL2 (expr1, expr2, expr3)
NULLIF (expr1, expr2)
COALESCE (expr1, expr2, ..., exprn)
7.1 NVL函数
将空值转换成一个已知的值:
?可以使用的数据类型有日期、字符、数字。
?函数的一般形式:
–NVL(commission_pct,0)
–NVL(hire_date,'01-JAN-97')
–NVL(job_id,'NoJobYet')
7.2 NVL2函数
7.3 NULLIF函数
7.4 COALESCE
- COALESCE与NVL相比的优点在于COALESCE可以同时处理交替的多个值。
- 如果第一个表达式非空,则返回这个表达式,对其他的参数进行COALESCE。
8 条件表达式
使用两种方法:
– CASE表达式
– DECODE函数
8.1 CASE表达式
在需要使用IF-THEN-ELSE 逻辑时
select e.*, CASE e.emp_mark WHEN 1 THEN 'Java初级程序员' WHEN 2 THEN 'Java中级程序员' WHEN 3 THEN 'Java高级程序员' ELSE '未入门' END CASE from emp e
8.2 DECODE函数
DECODE(col|expression,search1,result1[, search2, result2,...,][, default])
select e.*, decode(e.emp_mark, 1,'Java初级程序员', 2,'Java中级程序员', 3,'Java高级程序员', '未入门') from emp e
猜你喜欢
- 2024-10-20 1 小时 SQL 极速入门(三)——分析函数
- 2024-10-20 oracle中常用的一些函数,巧用函数,减少代码量
- 2024-10-20 Oracle常用系统函数-日期和时间类函数
- 2024-10-20 oracle 函数decode用法 oracle的decode方法
- 2024-10-20 数据库笔试面试5——在Oracle中,函数的描述正确的是
- 2024-10-20 ORACLE 取两张表差值函数 minus oracle查询两个表中相同数据
- 2024-10-20 Oracle行转列、列转行函数 oracle12c行转列函数
- 2024-10-20 用ORACLE分析函数decode实现行列转换
- 2024-10-20 2周零基础搞定SQL——窗口函数 sql 窗口函数执行顺序
- 2024-10-20 Oracle数据库中几种非常有用的函数(with……as等)
你 发表评论:
欢迎- 最近发表
-
- 前端流行框架Vue3教程:13. 组件传递数据_Props
- 前端必看!10 个 Vue3 救命技巧,解决你 90% 的开发难题?
- JAVA和JavaScript到底是什么关系?是亲戚吗?
- Java和js有什么区别?(java和javascript的区别和联系)
- 东方标准|Web和Java的区别,如何选择这两个专业
- 前端面试题-JS 中如何实现大对象深度对比
- 360前端一面~面试题解析(360前端笔试)
- 加班秃头别慌!1 道 Vue 面试题,快速解锁大厂 offer 通关密码
- 焦虑深夜刷题!5 道高频 React 面试题,吃透 offer 稳了
- 2025Web前端面试题大全(整理版)面试题附答案详解,最全面详细
- 标签列表
-
- 前端设计模式 (75)
- 前端性能优化 (51)
- 前端模板 (66)
- 前端跨域 (52)
- 前端md5加密 (49)
- 前端路由 (55)
- 前端数组 (65)
- 前端定时器 (47)
- 前端懒加载 (45)
- 前端接口 (46)
- Oracle RAC (73)
- oracle恢复 (76)
- oracle 删除表 (48)
- oracle 用户名 (74)
- oracle 工具 (55)
- oracle 内存 (50)
- oracle 导出表 (57)
- oracle查询数据库 (45)
- oracle约束 (46)
- oracle 中文 (51)
- oracle链接 (47)
- oracle的函数 (57)
- mac oracle (47)
- 前端调试 (52)
- 前端登录页面 (48)
本文暂时没有评论,来添加一个吧(●'◡'●)