日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Oracle中的单值函数

發布時間:2025/6/15 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Oracle中的单值函数 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

2019獨角獸企業重金招聘Python工程師標準>>>

Oracle的函數

???????? ?????Oracle函數可以分為單值函數和分組函數兩大類,單值函數又分為字符函數、日期和時間函數、數字函數、轉換函數和混合函數:分組函數右countmaxminavgsum,都可以和group by 搭配使用。

???????? 單值函數

1、字符函數

l? 字符串連接函數

問題:把員工的姓名和工作類型連在一起使用"-"分隔

函數:concat(字符串1,字符串2)








?

select concat(concat(ename,'-'),job) from
? emp;


?


擴展點:字符串連接符號
" || "





?

select ename || '-' || job from emp;


?


l? 右對齊函數

問題:將員工的姓名右對齊顯示

函數:lpad(待處理的字符串,預留位置,填充符號)??








?

select lpad(ename,10,' ') from emp;


?


???????? l? 字符串截取函數

問題:截取員工姓名的前3個字符和字符4以后的內容顯示

函數:substr(字符串,起始位置,截取的個數)

substr(字符串,起始位置)? --默認截取到最后






?

select ename,
? substr(ename,1,3),substr(ename,4) from emp;


?

l? 字符查找函數

問題:字母'T'在員工姓名中第一次出現和第二次出現的位置

函數:instr(字符串,查找的字符,查找的起始位置,出現的次數)






?

select ename, instr(ename,'T',1,1) as A,
? instr(ename,'T',1,2) as B from emp;


?

擴展:員工姓名中不含 M 的員工






?

select ename from emp where
? instr(ename,'M',1,1)=0


?


l? 首字母大寫函數


問題:員工姓名首字母大寫顯示

函數:initcap(字符串)






?

select initcap(ename) from emp;


?
l? / 大寫函數


問題:將員工姓名大寫轉換

函數:upper(字符串)/lower(字符串)






?

select upper(ename) , lower(ename) from
? emp;


?


l? 字符串替換函數


問題:將姓名中的M全部替換成'*'顯示

函數:replace(字符串,帶替換的字符,替換后的字符)






?

select replace(ename,'M','*') from emp;


?

l? 字符串長度函數

問題:找出姓名長度大于5的員工姓名

函數:length(字符串)







?

select ename from emp where
? length(ename)>5;


?


2、日期函數

l? 系統時間

問題:返回系統的當前時間

?? 函數:sysdate

?? 說明:1、函數沒有“( )

2dual 是一張無意義的表,在Oracle專門用于函數的測試






?

select sysdate from dual;


?


使用一個 to_char, 轉換函數類型


?將時間類型轉成字符類型

函數:to_char(時間數據,格式)






?

select to_char(sysdate,'yyyy-mm-dd
? hh:mi:ss') from dual;


?


?格式:yyyy

mm

dd 日期

d 一周中的第幾天

ddd 一年中的第幾天

day

month 月份

hh24 24小時制

???? l? 日期修改函數

問題:將系統時間添加2個月顯示

函數:add_months(時間數據,添加的月份)







?

select add_months(sysdate,2) from dual;


?


????????????????????????????? l? 日期差函數

問題:顯示員工入職時間的月份統計



???函數:months_between(時間1,時間2)








?

select
? ename,hiredate,months_between(sysdate,hiredate) from emp;


?


????????????
??



3、?
轉換函數



l? to_char()見上例



?



l? 時間轉換函數



???????? 函數:to_date(時間數據字符串,格式)








?

insert into 表名 values(to_date('2009-12-12','yyyy-mm-dd'));


?


?????????????????



? 案例1:查詢在12年前參加工作的員工








?

Select
? ename,hiredate from emp where months_between(sysdate,hiredate)>144


?


??



? 案例2:查詢在當月倒數第三天參加工作的員工



??????? 函數:last_day(時間數據)? -> 返回該日期所在月份的最后一天








?

select ename,hiredate from emp where
? last_day(hiredate)-2 = hiredate;


?


??????? ?



? 案例3:查詢每個員工的工作天數



格式:時間1-時間2 ?-->? 返回相差的天數








?

select ename,hiredate,sysdate-hiredate
? from emp;


?


????????



4、?
數學函數



l?
round(數字) 四舍五入



? 案例:按每月30天計算員工的每日薪水,要求計算結果四舍五入到小數點后2



??????????? ????????????函數:round(數字,精度)








?

select ename,round(sal/30,2) from emp;


?


???????????????? l?trunc(數字) 取整函數->只保留整數部分


? 案例:查詢員工工作了多少個月








?

select ename,trunc(months_between(sysdate,hiredate)) from emp;


?


????????????????



l?floor(數字) 向下取



??floor(1.9)? -> 1



l?
ceil(數字) 向上取



??????????? ????????????ceil(1.1) -> 2???? 花費?



l?
abs(數字) 取絕對值函數



l?
mod(數字1,數字2) 取余函數



??????????? ????????????mod(5,4) -> 1



l?
power(數字,n次方)



??????????? ???????????power(2,4) -> 16





作者:中軟卓越天津ETC

轉載于:https://my.oschina.net/u/1053082/blog/150694

總結

以上是生活随笔為你收集整理的Oracle中的单值函数的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。