oracle 常用语句、函数(持续记录)

根据时间获取最新的一条数据

SELECT
	* 
FROM
	( SELECT r.*,rownum num FROM tablename r ORDER BY r.CREATE_DATE DESC ) t 
WHERE
	num = 1 

row_number() over函数

使用row_number()函数进行编号,如
select id,name, ROW_NUMBER() over(order by psd) as num from tablename
先按psd进行排序,排序完后,给每条数据进行编号。
统计出每一个用户的所有订单并按每一个客户下的订单的金额 升序排序,同时给每一个客户的订单进行编号。这样就知道每个客户下几单了
select ROW_NUMBER() over(partition by customerID  order by totalPrice) as rows,customerID,totalPrice, DID from OP_Order

单字段多个值的LIKE模糊查询REGEXP_LIKE函数

select * from tablename where REGEXP_LIKE(字段名称,' 值1|值2|值3 ')

varchar类型字段排序问题,使用CAST函数,将varchar类型转为number类型

CAST(bha.BHA_NUMBER AS NUMBER)

oracle填充字符串函数

语法:lpad( string,length,data)
string:字段;
length:填充后的字符串长度;
data:填充字符串,是个可选参数,这个字符串是要粘贴到string的左边,如果这个参数未写,lpad函数将会在string的左边粘贴空格。
应用场景:如order by排序,varchar2类型排序方式为1 10 13 2 22 33,使用lpad方法,lpad( 字段,2,0)后,varchar2排序方式为01 02 10 13 22 33

oracle时间函数

SYSDATE 默认是当前日期
日期格式可以结合其他函数使用,如:
to_char(sysdate,'YYYYMMDD W HH24:MI:SS') 作为一个字段查询使用
同时也可以使用它进行计算
加法
select sysdate,add_months(sysdate,12) from dual; --加1年 
select sysdate,add_months(sysdate,1) from dual; --加1月 
select sysdate,to_char(sysdate+7,'yyyy-mm-dd HH24:MI:SS') from dual; --加1星期 
select sysdate,to_char(sysdate+1,'yyyy-mm-dd HH24:MI:SS') from dual; --加1天 
select sysdate,to_char(sysdate+1/24,'yyyy-mm-dd HH24:MI:SS') from dual; --加1小时 
select sysdate,to_char(sysdate+1/24/60,'yyyy-mm-dd HH24:MI:SS') from dual; --加1分钟 
select sysdate,to_char(sysdate+1/24/60/60,'yyyy-mm-dd HH24:MI:SS') from dual; --加1秒 
减法
select sysdate,add_months(sysdate,-12) from dual; --减1年 
select sysdate,add_months(sysdate,-1) from dual; --减1月 
select sysdate,to_char(sysdate-7,'yyyy-mm-dd HH24:MI:SS') from dual; --减1星期 
select sysdate,to_char(sysdate-1,'yyyy-mm-dd HH24:MI:SS') from dual; --减1天 
select sysdate,to_char(sysdate-1/24,'yyyy-mm-dd HH24:MI:SS') from dual; --减1小时 
select sysdate,to_char(sysdate-1/24/60,'yyyy-mm-dd HH24:MI:SS') from dual; --减1分钟 
select sysdate,to_char(sysdate-1/24/60/60,'yyyy-mm-dd HH24:MI:SS') from dual; --减1秒 
字母说明
ddd 年中的第几天 
WW 年中的第几个星期 
W 该月中第几个星期 
D 周中的星期几 
hh 小时(12) 
hh24 小时(24) 
Mi 分 
ss 秒

oracle TRUNC函数

1、TRUNC(for dates)
TRUNC函数为指定元素而截去的日期值。
其具体的语法格式如下:
TRUNC(date[,fmt])
其中:
date 一个日期值
fmt 日期格式,该日期将由指定的元素格式所截去。忽略它则由最近的日期截去
例:
trunc(sysdate,'yyyy') --返回当年第一天。
trunc(sysdate,'mm') --返回当月第一天。
trunc(sysdate,'d') --返回当前星期的第一天。
trunc(sysdate,'dd')--返回当前年月日
2、TRUNC(for number)
TRUNC函数返回处理后的数值,其工作机制与ROUND函数极为类似,只是该函数不对指定小数前或后的部分做相应舍入选择处理,而统统截去。
其具体的语法格式如下
TRUNC(number[,decimals])
其中:
number 待做截取处理的数值
decimals 指明需保留小数点后面的位数。可选项,忽略它则截去所有的小数部分
例:
TRUNC(89.985,2)=89.98
TRUNC(89.985)=89
TRUNC(89.985,-1)=80

猜你喜欢

转载自blog.csdn.net/lmq2582609/article/details/84107823