Oracle排序,伪列,字符函数,数字函数,日期行数

2024-03-09 22:32

本文主要是介绍Oracle排序,伪列,字符函数,数字函数,日期行数,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一  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(日期,第几天) 获取当前日期下一个星期的第几天 
 


             
 


 


   




 

这篇关于Oracle排序,伪列,字符函数,数字函数,日期行数的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/792153

相关文章

从去中心化到智能化:Web3如何与AI共同塑造数字生态

在数字时代的演进中,Web3和人工智能(AI)正成为塑造未来互联网的两大核心力量。Web3的去中心化理念与AI的智能化技术,正相互交织,共同推动数字生态的变革。本文将探讨Web3与AI的融合如何改变数字世界,并展望这一新兴组合如何重塑我们的在线体验。 Web3的去中心化愿景 Web3代表了互联网的第三代发展,它基于去中心化的区块链技术,旨在创建一个开放、透明且用户主导的数字生态。不同于传统

hdu1171(母函数或多重背包)

题意:把物品分成两份,使得价值最接近 可以用背包,或者是母函数来解,母函数(1 + x^v+x^2v+.....+x^num*v)(1 + x^v+x^2v+.....+x^num*v)(1 + x^v+x^2v+.....+x^num*v) 其中指数为价值,每一项的数目为(该物品数+1)个 代码如下: #include<iostream>#include<algorithm>

【数据结构】——原来排序算法搞懂这些就行,轻松拿捏

前言:快速排序的实现最重要的是找基准值,下面让我们来了解如何实现找基准值 基准值的注释:在快排的过程中,每一次我们要取一个元素作为枢纽值,以这个数字来将序列划分为两部分。 在此我们采用三数取中法,也就是取左端、中间、右端三个数,然后进行排序,将中间数作为枢纽值。 快速排序实现主框架: //快速排序 void QuickSort(int* arr, int left, int rig

usaco 1.3 Mixing Milk (结构体排序 qsort) and hdu 2020(sort)

到了这题学会了结构体排序 于是回去修改了 1.2 milking cows 的算法~ 结构体排序核心: 1.结构体定义 struct Milk{int price;int milks;}milk[5000]; 2.自定义的比较函数,若返回值为正,qsort 函数判定a>b ;为负,a<b;为0,a==b; int milkcmp(const void *va,c

usaco 1.2 Name That Number(数字字母转化)

巧妙的利用code[b[0]-'A'] 将字符ABC...Z转换为数字 需要注意的是重新开一个数组 c [ ] 存储字符串 应人为的在末尾附上 ‘ \ 0 ’ 详见代码: /*ID: who jayLANG: C++TASK: namenum*/#include<stdio.h>#include<string.h>int main(){FILE *fin = fopen (

hdu 1285(拓扑排序)

题意: 给各个队间的胜负关系,让排名次,名词相同按从小到大排。 解析: 拓扑排序是应用于有向无回路图(Direct Acyclic Graph,简称DAG)上的一种排序方式,对一个有向无回路图进行拓扑排序后,所有的顶点形成一个序列,对所有边(u,v),满足u 在v 的前面。该序列说明了顶点表示的事件或状态发生的整体顺序。比较经典的是在工程活动上,某些工程完成后,另一些工程才能继续,此时

C++操作符重载实例(独立函数)

C++操作符重载实例,我们把坐标值CVector的加法进行重载,计算c3=c1+c2时,也就是计算x3=x1+x2,y3=y1+y2,今天我们以独立函数的方式重载操作符+(加号),以下是C++代码: c1802.cpp源代码: D:\YcjWork\CppTour>vim c1802.cpp #include <iostream>using namespace std;/*** 以独立函数

《数据结构(C语言版)第二版》第八章-排序(8.3-交换排序、8.4-选择排序)

8.3 交换排序 8.3.1 冒泡排序 【算法特点】 (1) 稳定排序。 (2) 可用于链式存储结构。 (3) 移动记录次数较多,算法平均时间性能比直接插入排序差。当初始记录无序,n较大时, 此算法不宜采用。 #include <stdio.h>#include <stdlib.h>#define MAXSIZE 26typedef int KeyType;typedef char In

函数式编程思想

我们经常会用到各种各样的编程思想,例如面向过程、面向对象。不过笔者在该博客简单介绍一下函数式编程思想. 如果对函数式编程思想进行概括,就是f(x) = na(x) , y=uf(x)…至于其他的编程思想,可能是y=a(x)+b(x)+c(x)…,也有可能是y=f(x)=f(x)/a + f(x)/b+f(x)/c… 面向过程的指令式编程 面向过程,简单理解就是y=a(x)+b(x)+c(x)

【软考】希尔排序算法分析

目录 1. c代码2. 运行截图3. 运行解析 1. c代码 #include <stdio.h>#include <stdlib.h> void shellSort(int data[], int n){// 划分的数组,例如8个数则为[4, 2, 1]int *delta;int k;// i控制delta的轮次int i;// 临时变量,换值int temp;in