Oracle排序,伪列,字符函数,数字函数,日期行数
来源:互联网 发布:淘宝一键复制宝贝违法 编辑:程序博客网 时间:2024/05/17 03:40
一 ORACle的排序
排序语句:
SELECT [DISTINCT] * | [列名 [别名],…]
FROM 表名
WHERE 条件
ORDER BY 排序的列 [ASC | DESC],…;
select * from emp order by hiredate desc ( desc表示降序 从大到小 asc 表示升序)
select * from emp where where job='MANAGER' order by hiredate desc; (按条件查询出结果后排序)
select * from mep order by hiredate desc,sal desc (按条件一升序后 相同的条件一在进行条件二排序)
二 Oracle的伪列
ROWID 是表中每一条记录的唯一标识符,数据库内部使用它来存储行的物理地址。
该地址可以唯一地标识数据库中的一行,可以使用 ROWID 伪列快速地定位表中的某一行。
无法使用update语句修改
ROWNUM 是SQL查询返回的结果集中每一行的行号。
可以用它来限制查询返回的行数。
ROWNUM是先查到结果集之后再加上去的一个列 。
在oracle中使用rownum来进行分页
select t.* ,rownum as rn from emp where rownum>=10 and rownum<=20这是错误的
因为行的循环查找 从索引1 开始 第一条记录的索引为1 不满足 循环第二条时 记录索引从1 开始 。。。。所以的行的行号都是1 永远不满足
select * from (select t.*,rownum as rn from emp t) where rn>=10 and rn<=20 这是正确的 (一般使用)
分页另一种写法
select * from (select t.*,rownum as rn from emp t where rownum<=20) where rn>=10 正确的
select * from emp where rownum<=10 这是正确
记录:rownum大于1的记录永远不可能成立 rownum<等于任何值都成立
三 oracle的单行函数
字符串函数
lower(n) 将字符转换成小写
select lower('AAAA') from dual; --aaaa
select lower(ename) from emp; --列输出结果全部小写
upper(n) 将字符串转换成大写
replace(列名,被替换的字符串,替换的字符串)
select ename,replace(job,'MANAGER','经理') from emp; --job列中 所有的MANAGER都被替换成了经理
select replace('AAAtestgggg','test','测试') from dual; --AAA测试gggg
instr(列名,被搜索的字符串)
select instr('AAAtestgggg','test') from dual; --4 索引从1开始
substr(列名,开始位置,总长度)
select instr('AAAtestgggg',4,3) from dual; --tes
concat(参数1,参数2)
select concat('a','b') from dual; --- ab 等价于 'a'||'b'
length(列名) 获取字符的长度
trim(列名) 去空格
ltrim 去左侧的空格
rtrim 去右侧的空格
nvl(列名,值) 当列的值为空时 输入第二参数的值 如果不为空 输出当前列的值
nvl2(列名,值1,值2) 当列的值为空时 输出第二个参数的值 如果不为空输出第三个参数的值
decode(列名,条件1,值1,条件2,值2......,条件n,值n) 当列的值等于条件n时输出值n
数字函数
mod(5,2) 取余数 等价于java 5%2
round(n) 对整数位进行四舍五入 满5进1
round(n,p) 对小数位进行四舍五入 比如 round(5.6767,2) 输出为5.68
trunc(n) 截断小数位 只保留整数位
trunc(n,p) 截断小数位意外的位数 比如 trunc(5.666,2) 输出为5.66 就是保留p位小数
日期函数
sysdate 获取系统的当前时间
add_months(日期,月数) 将日期加上月数 并返回 比如 (sysdate=2016-3-3)+5个月 =2016-8-3
select sysdate+天数 from dual 将当前日期加上某个数字 表示+天数
months_between(日期1,日期2) 比较日期1和日期2的相差的月份数 结果=日期1-日期2
last_day(日期) 返回日期对应月份的最后一天
round(日期,格式)
YEAR 获取当年的第一天
MONTH 获取当月的第一天
DAY 获取 第一个周末的第一天
next_day(日期,第几天) 获取当前日期下一个星期的第几天
排序语句:
SELECT [DISTINCT] * | [列名 [别名],…]
FROM 表名
WHERE 条件
ORDER BY 排序的列 [ASC | DESC],…;
select * from emp order by hiredate desc ( desc表示降序 从大到小 asc 表示升序)
select * from emp where where job='MANAGER' order by hiredate desc; (按条件查询出结果后排序)
select * from mep order by hiredate desc,sal desc (按条件一升序后 相同的条件一在进行条件二排序)
二 Oracle的伪列
ROWID 是表中每一条记录的唯一标识符,数据库内部使用它来存储行的物理地址。
该地址可以唯一地标识数据库中的一行,可以使用 ROWID 伪列快速地定位表中的某一行。
无法使用update语句修改
ROWNUM 是SQL查询返回的结果集中每一行的行号。
可以用它来限制查询返回的行数。
ROWNUM是先查到结果集之后再加上去的一个列 。
在oracle中使用rownum来进行分页
select t.* ,rownum as rn from emp where rownum>=10 and rownum<=20这是错误的
因为行的循环查找 从索引1 开始 第一条记录的索引为1 不满足 循环第二条时 记录索引从1 开始 。。。。所以的行的行号都是1 永远不满足
select * from (select t.*,rownum as rn from emp t) where rn>=10 and rn<=20 这是正确的 (一般使用)
分页另一种写法
select * from (select t.*,rownum as rn from emp t where rownum<=20) where rn>=10 正确的
select * from emp where rownum<=10 这是正确
记录:rownum大于1的记录永远不可能成立 rownum<等于任何值都成立
三 oracle的单行函数
字符串函数
lower(n) 将字符转换成小写
select lower('AAAA') from dual; --aaaa
select lower(ename) from emp; --列输出结果全部小写
upper(n) 将字符串转换成大写
replace(列名,被替换的字符串,替换的字符串)
select ename,replace(job,'MANAGER','经理') from emp; --job列中 所有的MANAGER都被替换成了经理
select replace('AAAtestgggg','test','测试') from dual; --AAA测试gggg
instr(列名,被搜索的字符串)
select instr('AAAtestgggg','test') from dual; --4 索引从1开始
substr(列名,开始位置,总长度)
select instr('AAAtestgggg',4,3) from dual; --tes
concat(参数1,参数2)
select concat('a','b') from dual; --- ab 等价于 'a'||'b'
length(列名) 获取字符的长度
trim(列名) 去空格
ltrim 去左侧的空格
rtrim 去右侧的空格
nvl(列名,值) 当列的值为空时 输入第二参数的值 如果不为空 输出当前列的值
nvl2(列名,值1,值2) 当列的值为空时 输出第二个参数的值 如果不为空输出第三个参数的值
decode(列名,条件1,值1,条件2,值2......,条件n,值n) 当列的值等于条件n时输出值n
数字函数
mod(5,2) 取余数 等价于java 5%2
round(n) 对整数位进行四舍五入 满5进1
round(n,p) 对小数位进行四舍五入 比如 round(5.6767,2) 输出为5.68
trunc(n) 截断小数位 只保留整数位
trunc(n,p) 截断小数位意外的位数 比如 trunc(5.666,2) 输出为5.66 就是保留p位小数
日期函数
sysdate 获取系统的当前时间
add_months(日期,月数) 将日期加上月数 并返回 比如 (sysdate=2016-3-3)+5个月 =2016-8-3
select sysdate+天数 from dual 将当前日期加上某个数字 表示+天数
months_between(日期1,日期2) 比较日期1和日期2的相差的月份数 结果=日期1-日期2
last_day(日期) 返回日期对应月份的最后一天
round(日期,格式)
YEAR 获取当年的第一天
MONTH 获取当月的第一天
DAY 获取 第一个周末的第一天
next_day(日期,第几天) 获取当前日期下一个星期的第几天
0 0
- Oracle排序,伪列,字符函数,数字函数,日期行数
- Oracle基础知识4--单行函数(字符函数、数字函数、日期函数、转换函数、通用函数)
- 字符函数、数字函数和日期函数
- Oracle日期函数/字符函数/数字函数/转换函数/聚合函数
- ORACLE日期时间函数大全(处理日期、字符、数字转换等函数用法)
- oracle---伪列和单行函数
- ORACLE日期,字符函数大全
- oracle基础_字符_数字_日期_转换-函数
- Oracle中的数字函数、日期、条件表达式
- Oracle数字、日期截取函数TRUNC
- Oracle中的函数 字符串、数字、日期
- Oracle数字型,字符型,日期型函数
- oracle中对字母加数字列的排序及截取字符串函数substr介绍
- 数据库之单行函数:字符函数,数字函数,日期函数,转换函数,通用函数,case表达式,decode函数
- Oracle伪列和伪表和分组函数(row_number,Rank)
- Mysql 数字、字符函数
- Oracle基础学习四:字符串 数字 日期 等 相关函数
- 函数模板的使用,对数字,字符的排序,
- 【leetcode】28. Implement strStr()
- Android OkHttp完全解析 是时候来了解OkHttp了
- 返回JSON数据到客户端
- 腾讯笔试题 构造回文字符串
- Web容器 、Web服务和应用服务器
- Oracle排序,伪列,字符函数,数字函数,日期行数
- mysql 游标与事务共同使用
- 静态链接和动态链接库混用导致的链接错误LIN
- VS2013中缺少 ADO 实体模型,这一项。
- java 为何null布局 jbutton鼠标划过才显示
- OpenCV之均值漂移(Mean Shift)算法
- iOS面试题二
- Ubuntu15.10下如何使用EasyGui模块开发Python GUI
- 朦胧的民国