当前位置:数据库 > Oracle >>

oracle的一些函数

oracle的一些函数
 
Java代码  
-- 取模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 ;  
  
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,