Oracle中的单值函数
2019獨角獸企業重金招聘Python工程師標準>>>
Oracle的函數
???????? ?????Oracle函數可以分為單值函數和分組函數兩大類,單值函數又分為字符函數、日期和時間函數、數字函數、轉換函數和混合函數:分組函數右count、max、min、avg、sum,都可以和group by 搭配使用。
???????? 單值函數
1、字符函數
l? 字符串連接函數
問題:把員工的姓名和工作類型連在一起使用"-"分隔
函數:concat(字符串1,字符串2)
| ? select concat(concat(ename,'-'),job) from ? |
擴展點:字符串連接符號
" || "
| ? select ename || '-' || job from emp; ? |
l? 右對齊函數
問題:將員工的姓名右對齊顯示
函數:lpad(待處理的字符串,預留位置,填充符號)??
| ? select lpad(ename,10,' ') from emp; ? |
???????? l? 字符串截取函數
問題:截取員工姓名的前3個字符和字符4以后的內容顯示
函數:substr(字符串,起始位置,截取的個數)
substr(字符串,起始位置)? --默認截取到最后
| ? select ename, ? |
l? 字符查找函數
問題:字母'T'在員工姓名中第一次出現和第二次出現的位置
函數:instr(字符串,查找的字符,查找的起始位置,出現的次數)
| ? select ename, instr(ename,'T',1,1) as A, ? |
擴展:員工姓名中不含 M 的員工
| ? select ename from emp where ? |
l? 首字母大寫函數
問題:員工姓名首字母大寫顯示
函數:initcap(字符串)
| ? select initcap(ename) from emp; ? |
問題:將員工姓名大寫轉換
函數:upper(字符串)/lower(字符串)
| ? select upper(ename) , lower(ename) from ? |
l? 字符串替換函數
問題:將姓名中的M全部替換成'*'顯示
函數:replace(字符串,帶替換的字符,替換后的字符)
| ? select replace(ename,'M','*') from emp; ? |
l? 字符串長度函數
問題:找出姓名長度大于5的員工姓名
函數:length(字符串)
| ? select ename from emp where ? |
2、日期函數
l? 系統時間
問題:返回系統的當前時間
?? 函數:sysdate
?? 說明:1、函數沒有“( )”
2、dual 是一張無意義的表,在Oracle專門用于函數的測試
| ? select sysdate from dual; ? |
使用一個 to_char, 轉換函數類型
?將時間類型轉成字符類型
函數:to_char(時間數據,格式)
| ? select to_char(sysdate,'yyyy-mm-dd ? |
?格式: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 ? |
????????????
??
3、?
轉換函數
l? to_char()見上例
?
l? 時間轉換函數
???????? 函數:to_date(時間數據字符串,格式)
| ? insert into 表名 values(to_date('2009-12-12','yyyy-mm-dd')); ? |
?????????????????
? 案例1:查詢在12年前參加工作的員工
| ? Select ? |
??
? 案例2:查詢在當月倒數第三天參加工作的員工
??????? 函數:last_day(時間數據)? -> 返回該日期所在月份的最后一天
| ? select ename,hiredate from emp where ? |
??????? ?
? 案例3:查詢每個員工的工作天數
格式:時間1-時間2 ?-->? 返回相差的天數
| ? select ename,hiredate,sysdate-hiredate ? |
????????
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中的单值函数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 《C++ primer》--第10章
- 下一篇: 买眼镜