`
m654352
  • 浏览: 26572 次
社区版块
存档分类
最新评论

oracle一些函数

 
阅读更多
-- 取模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 ;
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics