oracle--單行函數和多行函數


單行函數

1、字符函數

函  數

功  能

示  例

結 果

INITCAP (char)

首字母大寫

initcap ('hello')

Hello

LOWER (char)

轉換為小寫

lower ('FUN')

fun

UPPER (char)

轉換為大寫

upper ('sun')

SUN

LTRIM (char, set)

左剪裁

ltrim ('xyzadams', 'xyz')

adams

RTRIM (char, set)

右剪裁

rtrim ('xyzadams', 'ams')

xyzad

TRANSLATE (char, from, to)

按字符翻譯

translate ('jack', 'abcd', '1234')

j13k

REPLACE (char, search_str, replace_str)

字符串替換

replace ('jack and jue', 'j', 'bl')

black and blue

INSTR (char, substr[, pos])

查找子串位置

instr ('worldwide', 'd')

5

SUBSTR (char, pos, len)

取子字符串

substr ('abcdefg',3,2)

cd

CONCAT (char1, char2)

連接字符串

concat ('Hello', 'world')

Helloworld

 

2、數值函數 

函  數

功  能

示  例

結 果

ABS(n)

取絕對值

abs(-15)

15

CEIL(n )

向上取整

ceil(44.778)

45

SIN(n)

正弦

sin(1.571)

.999999979

COS(n)

余弦

cos(0)

1

SIGN(n)

取符號

sign(-32)

-1

FLOOR(n)

向下取整

floor(100.2)

100

POWER(m,n )

m的n次冪

power(4,2)

16

MOD(m,n)

取余數

mod(10,3)

1

ROUND(m,n)

四舍五入

round(100.256,2)

100.26

TRUNC(m,n)

截斷

trunk(100.256,2)

100.25

SQRT(n)

平方根

sqrt(4)

2

3、日期函數

函  數

功  能

示  例

結 果

MONTHS_BETWEEN

返回兩個日期間的月份

months_between ('04-11月-05','11-1月-01')

57.7741935

ADD_MONTHS

返回把月份數加到日期上的新日期

add_months('06-2月-03',1)

add_months('06-2月-03',-1)

06-3月-03

06-1月-03

NEXT_DAY

返回指定日期后的星期對應的新日期

next_day('06-2月-03','星期一')

10-2月-03

LAST_DAY

返回指定日期所在的月的最后一天

last_day('06-2月-03')

28-2月-03

ROUND

按指定格式對日期進行四舍五入

round(to_date('13-2月-03'),'YEAR')

round(to_date('13-2月-03'),'MONTH')

round(to_date('13-2月-03'),'DAY')

01-1月-03

01-2月-03

16-2月-03

TRUNC

對日期按指定方式進行截斷

trunc(to_date('06-2月-03'),'YEAR')

trunc(to_date('06-2月-03'),'MONTH')

trunc(to_date('06-2月-03'),'DAY')

01-1月-03

01-2月-03

02-2月-03

 4、轉換函數

 

 

 

 

日期格式元素

含義

YYYYYY

代表四位、兩位數字的年份

MM

用數字表示的月份

MON

月份的縮寫、對中文月份來說就是全稱

DD

數字表示的日

DY

星期的縮寫,對中文的星期來說就是全稱

HH24HH12

12小時或者24小時進制下的時間

MI

分鍾數

SS

秒數

數字格式元素

含義

9

代表一位數字,如果該位沒有數字則不進行顯示,但對於小數點后面的部分仍會強制顯示

0

代表一位數字,如果該位沒有數字則強制顯示0

$

顯示美元符號

L

顯示本地貨幣符號

.

顯示小數點

,

顯示千分位符號

 

  

 其他函數

 nvl() nvl2() decode()

 

函  數

功  能

NVL(EXP1, EXP2)

如果exp1的值為null,則返回exp2的值,否則返回exp1的值 

NVL2(EXP1, EXP2, EXP3)

如果exp1的值為null,則返回exp2的值,否則返回exp3的值

DECODE(VALUE,IF1,THEN1,

IF2,THEN2,……,ELSE)  

如果value的值為if1,則返回then1的值,如果value的值為if2,則返回then2的值,……,否則返回else值

 

 

 

多行函數

 

 

單行函數學習
				--查詢工作為SALESMAN,MANAGER並且工資大於2500的員工信息
				--1、使用小括號提升where篩選條件的執行優先級別
				--2、and的優先級別高於or
				select * from emp 
				select * from emp where job='SALESMAN' or job='MANAGER' and sal>2500
				select * from emp where (job='SALESMAN' or job='MANAGER') and sal>2500
				-----------------------------------------------------------------------------------------------------------
				使用函數 單行函數 多行函數 轉換函數 其他函數
				--單行函數學習:不改變原始數據,只改變結果
				---1、字符函數
				select * from emp;
				select INITCAP(ename) from emp;--initcap函數將首字母大寫
				select lower(ename)from emp;--lower 字母小寫
				select replace(ename,'S','M')  from emp;--replace 替換
				--2、數值函數--Math
				----偽表 dual
				select * from dual
				select abs(-3) 絕對值,ceil(3.1415926)向上取整,floor(3.1415926)向下取整,power(2,3)冪,round(3.4)四舍五入 from dual
				--3、日期函數
				select months_between('13-12月-2016','13-10月-2016') from dual--months_between兩個日期之間的月份數
多行函數學習
				多行函數 :
				  max: max(字段名) 返回此字段的最大值
				  min:min(字段名) 返回此字段的最小值
				  avg:avg(字段名) 返回平均值
				  sum:sum(字段名) 返回字段的和
				  count:count
							--count(*),用來查詢表中有多少條記錄
							--count(字段名),用來查詢某個字段有值的個數
							--count(distinct 字段名),可以先去除重復再計數。
				  注意:
					   --多行函數不能和普通字段直接出現在查詢語句中,除非group by 
					   --多行函數和單行函數不能直接出現在查詢語句中,除非group by        
				查看員工的最高工資
					select max(sal),ename from emp--多行函數不能和普通字段直接出現在查詢語句中,除非group by
					select max(sal),lower(ename) from emp--多行函數和單行函數不能直接出現在查詢語句中,除非group by
					select ename from emp
				查看員工的最低工資
					select min(sal) from emp
				查看員工的平均工資
					select avg(sal) from emp
				查看所有的員工工資之和
					select sum(sal) from emp
				查詢公司有多少員工
					select * from emp
					select count(*) from emp--使用count(*)來查看一張表中有多少條記錄
				查詢有津貼的員工人數
					select count(comm) from emp--使用count(字段名),查詢該字段有值的記錄數
					select count(ename) from emp
				查詢公司有多少工作種類
					select count(job) from emp
					select  count(distinct job) from emp 

  

 

轉換函數學習
				轉換函數:在轉換的時候改變的是數據的類型,數據內容不會改變,可以指定格式。
				1、to_number:將數字字符轉換為數字類型的數值,to_number(數字字符)
				2、to_char:將數字轉換為字符類型,將日期轉換為字符類型 to_char(數字/日期)
				3、to_date:將字符類型的日期轉換為日期類型: to_date(char)
				--------------------------------------------------------------------------------------
				number-->char 轉換的時候使用的是默認格式,
					select  to_char(123) from dual--將數字轉換為字符類型,使用to_char(number)
					select sal, to_char(sal) from emp
				number-->char 使用指定的格式 
					to_char(number,'格式'),格式:
							$代表美元符,9代碼數字占位。例如,L999,999,999表示三位一組的顯示方式L代表人民幣符號,0代表保留數字個數,不足使用0補充。
															 
							select to_char(sal),to_char(sal,'L999,999,999') from emp
							select to_char(sal),to_char(sal,'L0000.00') from emp
				char--->number  to_number(數字字符)
							select to_number('123') from dual
				
				char--->date,轉換的字符必須是日期格式的字符串,默認格式 dd-mm-yyyy
							注意:因為字符串有很多,所以在字符轉換為日期的時候,需要指定格式,因為日期是具備一定格式的字符組合。
								字符轉換為日期的時候,指定的格式為字符的日期順序,無需指定間隔符。
								yyyy:表示年  mm:表示月   dd表示日
							select to_date('05-12月-2016') from dual;
							select to_date('2016-05-12','yyyy-mm-dd') from dual--使用指定的格式將指定的日期字符串轉換為日期
							select to_date('12-05-2016','mm/dd/yyyy') from dual
				date--->char
							注意:因為日期本身就具備一定的格式在不是指定格式的情況下會默認使用dd-mm-yyyy格式顯示數據
								指定的格式會作為日期轉換為字符串類型的顯示格式存在。例如:
								yyyy-mm-dd'   ‘2016-12-05’
								yyyy/mm/dd'    '2016/12/05'
								yyyy"年"mm"月"dd"日"'     2016年12月05日
							select hiredate,to_char(hiredate) from emp--日期轉換為字符的時候,不指定格式使用默認格式:dd-mm-yyyy
							select hiredate,to_char(hiredate,'yyyy-mm-dd') from emp;--使用指定格式將日期轉換為字符串類型
							select hiredate,to_char(hiredate,'yyyy/mm/dd') from emp;--使用指定格式將日期轉換為字符串類型
							select hiredate,to_char(hiredate,'yyyy"年"mm"月"dd"日"') from emp;--使用指定格式將日期轉換為字符串類型
							
							查詢入職日期在81年10月20日后的員工信息
								第一種:自動轉型
							select * from emp where hiredate>'20-10月-1981'
								第二種:將日期轉換為字符串
							select * from emp where to_char(hiredate,'yyyy-mm-dd')>'1981-10-20'
								第三種:
							select * from emp where hiredate>to_date('1981-10-20','yyyy/mm/dd')
其他函數:
				單行函數:lower
				多行函數:min max sum avg count
				轉換函數:to_number to_char to_date
				-----------------------------------------------------------------------------------------
				其他函數:
					1、nvl():nvl(字段名,執行)--相當於java中的if條件判斷
					2、nvl2():nvl2(字段名,值,值)--相當於java中的If(){}else{}判斷
					3、decode():decode(字段名,條件1,執行內容1,條件2,執行內容2,條件3,執行內容3,默認執行內容)
					相當於java中if(){}else if(){}else if(){}...else{}
				查詢所有員工的月薪及姓名和工作
					select * from emp
					select ename,sal 基本工資,comm 績效,sal+comm 月薪 from emp
					select ename,sal 基本工資,comm 績效,sal+nvl(comm,0)月薪 from emp
				查詢所有員工的月薪及姓名和工作
					select ename,sal 基本工資,comm 績效,nvl2(comm,sal+comm,sal)月薪 from emp
				顯示員工的職稱
					select ename,job,decode(job,'MANAGER','經理','SALESMAN','銷售人員','普通員工') from emp

  

 

 

 

 

 

 


單行函數分類 字符函數 數值函數 日期函數 轉換函數 通用函數 多行函數 sum() avg() 僅適用數值型 count() max() min() 適用任何類型數據

  

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM