所謂的單行函數(shù)就是完成某一具體功能的操作函數(shù),單行函數(shù)一共分為一下幾種:
字符串函數(shù)、日期函數(shù)攒读、數(shù)值函數(shù)、轉(zhuǎn)換函數(shù)辛友、通用函數(shù)薄扁。
單行函數(shù)的格式:“返回值 函數(shù)名稱(參數(shù))”
一、字符串函數(shù)
upper 將傳入的字符變?yōu)榇髮懽帜?lower 將傳入的字符變?yōu)樾懽帜?
initcap 開頭首字母大寫废累,其它是小寫
length 獲得指定字符串的長度
substr 字符串的截取
replace 將新數(shù)據(jù)替換舊數(shù)據(jù)
1.將所有字母轉(zhuǎn)化為大小寫
① select upper('hello') from emp;
此時(shí)會(huì)有14行邓梅,為了方便查詢oracle創(chuàng)建了一個(gè)虛擬表dual;select upper('hello') from dual;
②將所有的名字轉(zhuǎn)換為小寫
select lower(ename) from emp;
在不區(qū)分大小的情況下統(tǒng)一將字母轉(zhuǎn)換為大寫或小寫
select* from emp where ename =upper('&inputname');
③將雇員姓名以首字母大寫的形式保存
select ename,initcap(ename) from emp;
④取的字符串長度
select length('helloworld!') from dual;
select* from emp where length(ename)=5;
⑤截取字符串
截取雇員姓名的前三位字母
select ename,substr(ename,1,3) from emp;
截取每個(gè)雇員姓名的后三位字母
select ename,substr(ename,-3) from emp;
以上截取方式只能在oracle中實(shí)現(xiàn),在程序不能運(yùn)用此方法邑滨。
也可以使用以下方式截取后三位字母
select ename,substr(ename,length(ename)-2) from emp;
二日缨、數(shù)值函數(shù)
數(shù)值函數(shù)主要進(jìn)行數(shù)字的處理,最為核心的是主要有三個(gè)掖看。
round 實(shí)現(xiàn)數(shù)據(jù)的四舍五入
trunc 實(shí)現(xiàn)數(shù)據(jù)的截取
mod 求模(計(jì)算余數(shù))
① select round(781.562) from dual;
②trunc和round區(qū)別不大匣距,唯一的區(qū)別是不會(huì)進(jìn)位
select trunc(781.56),trunc(1512.23),trunc(791.5)
from dual;
③mod
select mod(10,3) from dual;
三、日期函數(shù)
1.實(shí)現(xiàn)日期的基本操作
sysdate 只顯示當(dāng)前的日期
① select sysdate-7,sysdate+12 from emp;
對(duì)于日期而言每個(gè)月的天數(shù)是不同的哎壳,所以直接進(jìn)行加減運(yùn)算不是很準(zhǔn)確毅待。
②查詢雇員的編號(hào)、姓名归榕、職位尸红、雇用天數(shù)
select empno,ename,job,sysdate-hiredate from emp;
如果直接使用天數(shù)來計(jì)算年月日,那么最終結(jié)果不一定準(zhǔn)確。
2.為了準(zhǔn)確的進(jìn)行日期的計(jì)算外里,oracle里面提供了四個(gè)日期函數(shù)
add_months 在指定的日期上增加月數(shù)
months_between 返回兩個(gè)日期之間的天數(shù)
last_day 取得指定日期所在的月
next_day 返回下一個(gè)指定的月
①在當(dāng)前下增加指定的月份
select add_months(sysdate,4),add_months(sysdate,20)
from emp;
②計(jì)算雇員到今天為止的雇用月數(shù)
select empno,ename,hiredate,
months_between(sysdate,hiredate) from emp;
③計(jì)算當(dāng)期時(shí)間所在月的最后一天日期
select last_day(sysdate) from emp;
④計(jì)算下期的日期
select next_day(sysdate,'星期二') from emp;
四怎爵、轉(zhuǎn)換函數(shù)
字符串 to_char 將日期或數(shù)字格式化為指定的字符串
日期 to_date 按照指定的轉(zhuǎn)換格式編寫字符串后將其變?yōu)槿掌谛蛿?shù)據(jù)
數(shù)字 to_number 將字符串轉(zhuǎn)換為數(shù)字
①將日期,時(shí)間顯示格式化
select to_char(sysdate,'yyyy-mm-dd') from dual;
select to_char(sysdate,'yyyy-mm-dd hh:mi:ss')from dual;
查詢2月份的雇員信息
select* from emp where to_char(hiredate,'mm')=2;
拆份年月日
select to_char(sysdate,'yyyy'),to_char(sysdate,'mm'),to_char(sysdate,'dd')
from emp;
②轉(zhuǎn)日期函數(shù)
select to_date('2018-4-25','yyyy-mm-dd') from emp;
③轉(zhuǎn)數(shù)字函數(shù)
select to_number('2') from dual;
oracle中只有字符串的轉(zhuǎn)換最重要,其他都是次要的盅蝗,數(shù)字轉(zhuǎn)換其結(jié)果不變鳖链。