ORACLE SQL 單行函式

2021-09-25 08:49:57 字數 3376 閱讀 4238

sql函式有兩種

1、 單行行數:字元函式、數值函式、日期函式、轉換行數、通用行數

2、 多行行數

字元行數:

2.1大小寫控制函式:lower、upper、initcap

2.2字元控制函式: concat、substr、length、instr、lpad | rpad、trim、replace

字元控制函式

函式結果

意思concat(『hello』, 『world』)

helloworld

字元「合併」

substr(『helloworld』,1,5)

hello

字元「截斷」在第幾個到幾個

length(『helloworld』)

6找什麼字母在第幾個位置

instr(『helloworld』, 『w』)

10字元的長度

lpad(salary,10,』*』)

*****24000

左填充rpad(salary, 10, 『*』)

24000*****

右填充trim(『h』 from』helloworld』)

elloworld

去左右空格或左右字元

replace(『abcd』,』b』,』m』)

amcd

字元替換

數字函式:

--四捨五入方法

select round

(48.923,2

)as"1四捨五入一位"

,round

(48.923,0

)as"2預設四捨五入"

,round

(48.923,-

1)as"3四捨五入"

from dual;

--截斷

select trunc

(48.923,2

)as"1截斷兩位"

,trunc

(48.923,0

)as"2預設截斷"

,trunc

(48.923,-

2)as"3截斷"

from dual;

--求餘

select last_name,salary,

mod(salary,

5000)as

"求餘"

from employees

where job_id =

'sa_rep'

;

日期函式

oracle 中的日期型資料實際含有兩個值: 日期和時間。

日期的數**算

• 在日期上加上或減去乙個數字結果仍為日期。

• 兩個日期相減返回日期之間相差的天數。

– 日期不允許做加法運算,無意義

• 可以用數字除24來向日期中加上或減去天數。

如列提

--

兩個日期相差的月數

(months_between)

select months_between

('01-3月-19'

,'01-1月-19'

)月數 from employees;

--向指定日期中加上若干月數

(add_months)

select add_months

('01-1月-19',6

)from employees;

--指定日期的下乙個星期幾對應的日期

(next_day)

select next_day

('18-3月-19'

,'星期一'

)from employees

--本月的最後一天

(last_day)

select last_day

('18-3月-19'

)from employees

--月份的四捨五入

select round

(to_date

('1987-09-17'

,'yyyy-mm-dd'),

'month'

)from employees

--年份的四捨五入

select sysdate,

round

(sysdate,

'year'

)from employees;

--日期截斷

(trunc)

select sysdate,

trunc

(sysdate,

'month'

)"月份截斷"

,trunc

(sysdate,

'year')as

"年份截斷"

from employees;

顯式資料型別轉換

• 可以使用的資料型別有日期、字元、數字。

• 函式的一般形式:

– nvl(commission_pct,0)

– nvl(hire_date,『01-jan-97』)

– nvl(job_id,『no job yet』)

使用 nvl2 函式

nvl2 (expr1, expr2, expr3): expr1不為null,返回expr2;為null,返回expr3。

select last_name,  salary, commission_pct,

nvl2

(commission_pct,

'sal+comm'

,'sal'

) income

from employees

where department_id in(50

,80);

case 表示式

下面是使用case表示式的乙個例子:

select last_name, job_id, salary,

casc job_id when'it_prog' then 1.10

*salary

when 'st_clerk' then 1.15

*salary

when 'sa_rep' then1.

20*salary

else salary end"revised_salary"

from employees;

巢狀函式

• 單行函式可以巢狀。

• 巢狀函式的執行順序是由內到外

f3(f2

(f1(col,arg1)

,arg2)

,arg3)

ORACLE SQL單行函式

單行函式運算元據物件,接受引數返回乙個結果,只對一行資料進行變換,每行返回乙個結果,可以轉換資料型別,可以巢狀,引數可以是一列或乙個值 單行函式包括 字元函式 1 大小寫控制函式 lower 轉小寫 upper 轉大寫 initcap 首字母大寫 2 字元控制函式 concat 拼接字串 subst...

ORACLE SQL單行函式細節

單行函式有很多,不過有些經常用到又比較複雜 易忘 的概念或函式還是值得提出來做個筆記 首先是有關日期的運算都分先後的,比如 日期四則運算,months between select months between to date 1997 7 7 yyyy mm dd sysdate from dua...

Oracle SQL單行函式之數字函式

數字函式 簡介 數字函式的輸入引數和返回值都是數字型別,並且多數函式精確到38位。函式cos cosh exp ln log sin sinh sqrt tan和tanh精確到36位,函式acos asin atan和atan2精確到30位。單行數字函式 1.abs n 該函式用於返回數字n的絕對值...