Oracle常用函数(持续更新)

前端之家收集整理的这篇文章主要介绍了Oracle常用函数(持续更新)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

Oracle常用函数

一.对数字精度处理

1.trunc(截取字符串)

trunc(number[,decimals])

number 待做截取处理的数值,decimals 表明小数点要保留的位数,省略则截取全部小数

(decimals可为负数,当为负数时,数值以小数点左边开始截取截取后用0替换)

例: select trunc(123.4) from dual --123;

select trunc(123.45,1) from dual --123.4;

select trunc(128.4,-1) from dual --120;

trunc(date[,fmt])

date 为输入的一个日期,fmt为日期格式,用以指定的日期按格式截取

例:select trunc(sysdate,'yyyy') -- 返回当年第一天

select trunc(sysdate,'mm') -- 返回当月第一天

select trunc(sysdate,'D') -- 返回当前星期第一天

2.round(四舍五入)

round(number[,decimalPlace])

number:处理的数值 decimalPlace:要四舍五入的小数点位置(同trunc)

例: select round(123.4) from dual --120;

select round(123.45,1) from dual --123.5;

select round(128.4,-1) from dual --130;

3.ceil、floor

ceil(number) 获取比number大的最小整数。例:ceil(123.4) -- 124

floor(number) 获取比number小的最大整数。例:floor(123.4) -- 123

4.modmod(m,n) 表示m除以n的余数,若n=0,则返回m。select mod(7,5) from dual -- 2;

5.powerpower(m,n) 表示m的n次方.。select power(3,2) from dual --9;

6.signsign(n) n=0返回0,n>0返回1,n<0返回-1。select sign(12) from dual --1;

7.sqrtsqrt(n) n的平方根。select sqrt(25) from dual --5;

二、对字符进行处理

concat(char1,char2) 连接char1和char2 select concat('11','22') fron dual; 1122

initcap(char) 把每个字符串的第一个字符换成大写  select initicap('mr.ecop') from dual; Mr.Ecop

lower/upper(char) 整个字符串换成小/大写       

select lower/upper('MR.ecop') from dual; mr.ecop

lpad(str1,n,str2) 左补n个str2字符,不够循环补充 select lpad('11',8,'23') from dual; 23232311

rpad(str1,str2) 右补n个str2字符,不够循环补充 select rpad('11','23') from dual; 11232323


ltrim(string,'str') 从左边删除字符,string可为字段或字符串,'str'为要删除字符串集

SELECT LTRIM('abcdab','a') FROM DUAL; bcdab 若为b,结果仍为abcdab,不能跳删

rtrim(string,'str') 从右边删除字符,string可为字段或字符串,'str'为要删除字符串集

SELECT RTRIM('abcdab','b') FROM DUAL; abcda 若为a,结果仍为abcdab,不能跳删

replace(char,str1,str2) 字符串中所有str1换成str2 select replace('Scott','s','Boy') from dual; Boycott

substr(char,m,n) 取出从m字符开始的n个字符的子串  select substr('ABCDEF',2,2) from dual; CD

length(char) 求字符串的长度    select length('ACD') from dual; 3

|| 并置运算符  select 'ABCD'||'EFGH' from dual; ABCDEFGH

INSTR (string,set[,start[,occurrence] ] )

该命令“string”中从“start”位置开始查找字符集合的位置,再查找“set”出现的第一次、第二次等等的“occurrence”(次数)。“start”的值也可以是负数,代表从字符串结尾开始向反方向搜索。该函数也用于数字和日期数据类型。

示例 SELECT INSTR('aptech is aptech','ap',1,2) FROM DUAL; 11 出现第二次的位置

soundex(char) 返回发音类似拼写不同的字

ASCII(char) 返回字符串最左侧的ASCII码

TRANSLATE(string,from_str,to_str) 返回将(所有出现的)from_str中的每个字符替换为to_str中的相应字符以后的string。

SELECT TRANSLATE('abcdefghij','abcdef','123456') FROM dual; 123456ghij

三、日期进行处理

sysdate 当前日期和时间 select sysdate from dual;

last_day  本月最后一天 select last_day(sysdate) from dual;

add_months(d,n) 当前日期d后推n个月 select add_months(sysdate,2) from dual;

months_between(d,n) 日期d和n相差月数

select months_between(sysdate,to_date('20020812','YYYYMMDD')) from dual;

next_day(d,day) d后第一周指定day的日期 select next_day(sysdate,'星期一') from dual;

日期与nls有关,英文则为 'Monday'

SELECT * FROM v$nls_parameters;SIMPLIFIED CHINESE

四、特殊格式日期处理

Y或YY或YYY 年的最后一位,两位,三位 select to_char(sysdate,'YYY') from dual;

Q 季度,1-3月为第一季度    select to_char(sysdate,'Q') from dual;

MM  月份数     select to_char(sysdate,'MM') from dual;

RM 月份的罗马表示 select to_char(sysdate,'RM') from dual; IV

month 用9个字符表示的月份名 select to_char(sysdate,'month') from dual;

ww 当年第几周         select to_char(sysdate,'ww') from dual;

w 本月第几周          select to_char(sysdate,'w') from dual;

DDD 当年第几天,一月一日为001,二月一日032 select to_char(sysdate,'DDD') from dual;

DD 当月第几天 select to_char(sysdate,'DD') from dual;

D 周内第几天 select to_char(sysdate,'D') from dual; 如 sunday

DY 周内第几天缩写       select to_char(sysdate,'DY') from dual; 如 sun

hh12 12小时制小时数       select to_char(sysdate,'hh12') from dual;

hh24 24小时制小时数       select to_char(sysdate,'hh24') from dual;

Mi 分钟数            select to_char(sysdate,'Mi') from dual;

ss 秒数             select to_char(sysdate,'ss') from dual;

select to_char(sysdate,'YYYY-MM-DD HH:24:mi:ss') from dual;

select to_date('1970-01-01 00:00:01','yyyy-mm-dd hh24:mi:ss') from dual;

to_number() 将合法的数字字符串 select to_number('88877') from dual; 88877

to_char() 将数字转换为字符串  select to_char(88877) from dual; '88877'

五、表达式条件匹配值

decode(条件,值1,翻译值1,值2,翻译值2,缺省值)

相当于if 条件 = 值1 then return翻译值1; elsif条件 = 值2then return翻译值2; else return缺省值; end if;

猜你在找的Oracle相关文章