-- 取模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 ' 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(TRAILING ' ' FROM ' akwolf ') 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 ;
oracle一些函数
猜你喜欢
转载自m654352.iteye.com/blog/1859220
今日推荐
周排行