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的絕對值...