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 ;DECLAREt_str VARCHAR2(100) ;BEGINSELECT TRIM(' akwolf ') INTO t_str FROM DUAL ;DBMS_OUTPUT.PUT_LINE('F--->'||t_str||'<----E') ;END;-- 截取头部分的空格SET SERVEROUT ON ;DECLAREt_str VARCHAR2(100) ;BEGINSELECT TRIM(LEADING ' ' FROM ' akwolf ') INTO t_str FROM DUAL ;DBMS_OUTPUT.PUT_LINE('F--->'||t_str||'<----E') ;END;-- 截取尾部分的空格SET SERVEROUT ON ;DECLAREt_str VARCHAR2(100) ;BEGINSELECT 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类,转化时间,数字到charSELECT 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 ENDSELECT 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 ;-- COUNTSELECT COUNT(*) FROM emp ;上一个:oracle反向索引
下一个:Oracle-ddl相关命令
- 更多Oracle疑问解答:
- 运行exp备份oracle数据库提示oracle-12154错误
- 有没有,生产Oracle Rman 备份脚本的工具啊!
- 初学orcle,希望有大大帮忙解说一下详细步骤,从登录oracle到创建表的过程
- oracle语句问题:一张user表,三个字段,id,name,time,插入记录比如:张三2007,李四2008,张三2011
- 如何写一个ORACLE触发器同步两个表中的数据?
- oracle 如何查看一个服务器上有多少个数据库.
- oracle 创建包的时候错误 求解
- oracle 重复列的问题
- oracle 中如何查处2星期前的数据
- 请教oracle数据库安装中的问题
- 请问谁能提供给我标准的oracle ERP的数据库表结构并详细说明各表主要的作用?
- 安装oracle遇到的问题 invalid entry CRC (expected 0x3e12e795 but got 0x9db0e9fd)
- 我的是ORACLE 10G,在RMAN中如何按指定的时间恢复数据文件啊?
- oracle为什么没有自动增长列
- oracle快捷键都有哪些啊?