度量快速开发平台-专业、快速的软件定制快开平台

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 部件 流程 SQL
查看: 1153|回复: 6
打印 上一主题 下一主题

[分享] oracle的一些函数

[复制链接]

542

主题

5916

帖子

1万

积分

作者

Rank: 7Rank: 7Rank: 7

积分
13589
跳转到指定楼层
楼主
发表于 2020-4-21 15:28:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

-- 取模MOD(n1,n2)   
SELECT MOD(25,3) FROM DUAL ;  
  
-- 四舍五入ROUND(n1[,n2])   
SELECT ROUND(23.56) r,FLOOR(23.56) f,CEIL(23.56) c FROM DUAL ;  
SELECT ROUND(23.56,1) r FROM DUAL ;  
  
-- 截取TRUNC(n1[,n2])  
SELECT TRUNC(23.56) FROM DUAL ;  
SELECT TRUNC(23.56,1) FROM DUAL ;  
  
-- 求对数  
SELECT LOG(1.1,1.2) FROM DUAL ;  
  
-- 求平方  
SELECT POWER(2,3) FROM DUAL ;  
  
-- 求平方根  
SELECT SQRT(4) FROM DUAL ;  
  
  
-- 字符转大写  
SELECT UPPER('com.akwolf.upper') FROM DUAL ;  
  
-- 字符转小写  
SELECT LOWER('COM.AKWOLF.LOWER') FROM DUAL ;  
  
-- 单词首字母大写  
SELECT INITCAP('com.akwolf.initcap') FROM DUAL ;  
  
-- 左填充  
SELECT LPAD('akwolf',10,'$') FROM DUAL ;  
  
-- 右填充  
SELECT RPAD('akwolf',10,'$') FROM DUAL ;  
  
-- 截取首尾空格  
SET SERVEROUT ON ;  
DECLARE  
t_str VARCHAR2(100) ;  
BEGIN  
SELECT TRIM('   akwolf    ') INTO t_str FROM DUAL ;  
DBMS_OUTPUT.PUT_LINE('F--->'||t_str||'<----E') ;  
END;  
  
-- 截取头部分的空格  
SET SERVEROUT ON ;  
DECLARE  
t_str VARCHAR2(100) ;  
BEGIN  
SELECT TRIM(LEADING ' ' FROM ' &nbsp; akwolf &nbsp; &nbsp;') INTO t_str FROM DUAL ;  
DBMS_OUTPUT.PUT_LINE('F--->'||t_str||'<----E') ;  
END;  
  
-- 截取尾部分的空格  
SET SERVEROUT ON ;  
DECLARE  
t_str VARCHAR2(100) ;  
BEGIN  
SELECT TRIM(TRAILING ' ' FROM ' &nbsp; akwolf &nbsp; &nbsp;') INTO t_str FROM DUAL ;  
DBMS_OUTPUT.PUT_LINE('F--->'||t_str||'<----E') ;  
END;  
  
-- 逐字符替换  
SELECT TRANSLATE('AKWOLF','AO','$%') FROM DUAL ;  
  
-- 截取字符串(第二个参数为负则从右往左数的位置)  
SELECT SUBSTR('AKWOLF',2,3) FROM DUAL ;  
  
-- 根据ASCII码返回字符值  
SELECT CHR(65) FROM DUAL ;  
  
-- 连接两个字符串  
SELECT CONCAT('COM','AKWOLF') FROM DUAL ;  
  
-- INSTR(c1,c2[,n1[,n2]]) :返回c2在c1中位置  
SELECT INSTR('ABCDABCD','B') FROM DUAL ;  
SELECT INSTR('ABCDABCD','B',3) FROM DUAL ;  
SELECT INSTR('ABCDABCD','B',-1) FROM DUAL ;  
  
-- LENGTH返回指定字符串的长度  
SELECT LENGTH('AKWOLF张') FROM DUAL ;  
  
-- 通过字符取得ASCII码  
SELECT ASCII('张') FROM DUAL ;  
  
-- ADD_MONTHS()返回指定日期月份+n之后的值  
SELECT ADD_MONTHS(SYSDATE,10) FROM DUAL ;  
  
-- CURRENT_DATE当前时间  
SELECT CURRENT_DATE,SYSDATE,SYSTIMESTAMP(4) FROM DUAL ;  
  
-- 指定时间的月最后一天  
SELECT LAST_DAY(SYSDATE) FROM DUAL ;  
  
-- NEXT_DAY(d,n)返回指定日期后第一个n的日期,n为一周中的某一天。  
SELECT NEXT_DAY(SYSDATE,'星期五') FROM DUAL ;  
  
-- 返回两个月之间的月份差  
SELECT MONTHS_BETWEEN(SYSDATE,ADD_MONTHS(SYSDATE,10)) FROM DUAL ;  
  
-- 取时间近似值  
SELECT ROUND(SYSDATE,'HH24') FROM DUAL ;  
  
-- 截取时间  
SELECT TRUNC(SYSDATE,'MM') FROM DUAL ;  
  
-- TO_CHAR()转化varchar2,nchar等到char类,转化时间,数字到char  
SELECT TO_CHAR('AABBCC') FROM DUAL ;  
SELECT TO_CHAR(SYSDATE,'YYYY-MM-DD HH24:MI:SS') FROM DUAL ;  
SELECT TO_CHAR(100,'L99G999D99MI') FROM DUAL ;  
  
-- TO_DATE(c[,fmt[,nls]])将字符类型转化为时间类型  
SELECT TO_DATE(54557,'J') FROM DUAL ;  
SELECT TO_NUMBER(TO_CHAR(TO_DATE('9999-12-31','yyyy-mm-dd'),'j')) FROM DUAL;  
  
-- DECODE条件判断  
SELECT DECODE('A','A','AKWOLF','C','COM','DEFAULT') FROM DUAL ;  
  
-- 取得序列中的最大值和最小值  
SELECT GREATEST(45,1,5,89) max,LEAST(45,1,5,89) min FROM DUAL ;  
  
-- NULLIF逻辑等价于:CASE WHEN c1 = c2 THEN NULL ELSE c1 END  
SELECT NULLIF(3,4),NVL(NULLIF('a','a'),'null') FROM DUAL ;  
  
-- NVL2(c1,c2,c3)  
SELECT NVL2(7,1,3) FROM DUAL ;  
SELECT NVL2(NULL,1,3) FROM DUAL ;  
  
-- SYS_CONNECT_BY_PATH(col,c)该函数只能应用于树状查询  
SELECT SYS_CONNECT_BY_PATH(ename,'-->') FROM emp START WITH empno = 7369 CONNECT BY PRIOR MGR=EMPNO ;  
  
-- SYS_CONTEXT(c1,c2[,n]) :将指定命名空间c1的指定参数c2的值按照指定长度n截取后返回。  
SELECT SYS_CONTEXT('USERENV','SESSION_USER') FROM DUAL ;  
SELECT SYS_CONTEXT('USERENV','CURRENT_SCHEMA') FROM DUAL ;  
SELECT SYS_CONTEXT('USERENV','IP_ADDRESS') FROM DUAL ;  
SELECT SYS_CONTEXT('USERENV','OS_USER') FROM DUAL ;  
  
-- AVG求平均值  
SELECT ename,empno,AVG(sal) FROM emp GROUP BY empno,ename ;  
  
-- COUNT  
SELECT COUNT(*) FROM emp ;  
  
-- MAX,MIN,SUM  
SELECT MAX(sal) max,MIN(sal) min,SUM(sal) sum FROM emp ;  
  
--DENSE_RANK(n1[,n2]...) WITHIN GROUP (ORDER BY col1 [desc|asc] [nulls first|last] [,col2 [desc|asc] [nulls first|last]]...) :计算指定值在记录集中的排序值。  
SELECT DENSE_RANK(14) WITHIN GROUP (ORDER BY empno) FROM emp ;
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

542

主题

5916

帖子

1万

积分

作者

Rank: 7Rank: 7Rank: 7

积分
13589
沙发
 楼主| 发表于 2020-4-21 15:29:13 | 只看该作者
回复 支持 反对

使用道具 举报

141

主题

1551

帖子

3573

积分

论坛元老

Rank: 8Rank: 8

积分
3573
板凳
发表于 2020-4-21 17:46:27 | 只看该作者
回复 支持 反对

使用道具 举报

141

主题

1551

帖子

3573

积分

论坛元老

Rank: 8Rank: 8

积分
3573
地板
发表于 2020-4-22 18:01:19 | 只看该作者
回复 支持 反对

使用道具 举报

141

主题

1551

帖子

3573

积分

论坛元老

Rank: 8Rank: 8

积分
3573
5#
发表于 2020-5-1 17:32:29 | 只看该作者
回复 支持 反对

使用道具 举报

141

主题

1551

帖子

3573

积分

论坛元老

Rank: 8Rank: 8

积分
3573
6#
发表于 2020-5-4 17:46:58 | 只看该作者
回复

使用道具 举报

141

主题

1551

帖子

3573

积分

论坛元老

Rank: 8Rank: 8

积分
3573
7#
发表于 2020-5-7 17:02:21 | 只看该作者
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|重庆度量科技  本站关键词:快速开发平台

GMT+8, 2024-11-24 13:30 , Processed in 0.143779 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表