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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

oracle学习笔记(二)------函数

發布時間:2025/7/14 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 oracle学习笔记(二)------函数 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

函數:單行函數,多行函數
  單行函數:字符函數,Number函數,日期函數,轉換函數,系統函數


(oracle中所有字母都是以大寫字母存儲的)
字符函數:轉換函數,字符操縱函數?
?? 轉換函數:lower('str') 將字符串中所有字母轉換為小寫
???select lower(ename) from emp;
??  upper('str') 將字符串中所有字母轉換為大寫
???select * from emp where ename='king';
??  initcap('SStr aaa') 將字符串首字母轉換為大寫,其它都轉換為小寫(Sstr Aaa)
?? 字符操縱函數: concat('str1','str2') 用于將兩個字符串連接(str1str2)
???sumstr('str',1,3) 取子串函數(str)
???length('str') 取字符串長度(3) (注意:每個漢字的長度為1,等同一個字母)
???instr('str','t') 取某字符在某個字符串中首次出現的位置(2)
???lpad() 將字符串按某種模式顯示
??????? lpad(sal,10,'*')? 結果:******5000
????比如sal是5000它按10位輸出,多出的位用'*'代替
?
?(字符串函數中的字符串下標是從1開始的,而不是0)
-------------------------
Number函數:
?round 返回四舍五入值
??round(45.926,2)? 45.93?
??round(45.926,0)? 46
??round(45.926,-1)? 50
?trunc 截取小數
??trunc(45.926,2)? 45.92
??trunc(45.926)? 45
??trunc(45.926,-1) 40
?mod 求余運算?
??mod(1600,300)? 100
---------------------------
日期型函數:
?日期型函數格式:century,year,month,day,hours,minutes,seconds
?默認日期格式:DD-MON-YY
?SYSDATE:返回當前數據庫服務器的系統日期和時間
??select sysdate from dual;
???(dual是系統的名義表,是為使用某些函數使用的表,oracle中不允許查詢語句中
???沒有from關鍵字)

?MONTHS_BETWEEN 返回兩個日期之間月份的差值
??MONTHS_BETWEEN('01-SEP-95','11-JAN-94')?? 19.6774194
??select trunc(months_between(sysdate,'11-JAN-94')/12) from emp?
???求出表emp中的員工工作的年數
?ADD_MONTHS 在日期上加上月份數
??ADD_MONTHS('11-JAN-94',6)??? 11-JUL-94
?NEXT_DAY 指定日期的后一天
??('01-SEP-95','FRIDAY')? 得到的是下一個周五是幾號
?LAST_DAY 月份中最后一天
??LAST_DAY('01-SEP-95')?30-SEP-95
?ROUND 四舍五入日期
??round('25_7_95','month')對月進行四舍五入 01-8-95
??round('25_7_95','year')對年進行四舍五入?? 01-1-96
?TRUNC 截斷日期
??trunc('25_7_95','month')? 01-7-95
??trunc('25_7_95','year')?? 01-1-95?
----------------------------------
轉換函數
?數據類型轉換:隱式數據類型轉換(隱式轉換函數可以不用轉換函數,oracle可以自動轉換),顯示數據類型轉換

oracle自動轉換
?字符型(數字的字符) 加 數字型 自動轉換成數字類型
?字符型 和 日期型 相互運算 時 自動轉換成日期型
?數值型 和 日期型 也可以自動轉換成字符型

顯示數據類型轉換:number 轉換為 character 用to_char
?? character轉換為 number 用to_number
?? character轉換為date用to_date
?? date轉換為character用to_char
???select ename,to_char(hiredate,'YYYY-MM-DD') from emp;
???顯示員工受雇日期,轉換為字符輸出

YYYY 代表完整的年份
YEAR 年份
MM 兩位數月份
MONTH 月份的完整名稱
DY 每星期中某天的三個字符縮寫
DAY 天的完整名稱

select name, to_char(hiredate,'YYYY-MM-DD') from emp;
顯示員工表,員工的姓名,將員工的受雇日期轉換成字符型顯示(hiredate 員工的雇傭日期)

select to_char(sal) from emp;
將員工工資轉換成字符型
select 'this is '||name||' '||to_char(sal) from emp;(加上連接運算符執行上面的操作)

insert into emp(no,name,hiredate) values(9005,'Tss','1990-11-1');
這里的'1990-11-1'必須符合alter session set nls_date_format='YYYY-MM-DD'定義的日期模式

如果session中定義的日期模式和輸入的不一樣,可以用下面的日期轉換函數去做
insert into emp(no,name,hiredate) values(9006,'Ppss',to_date('1990-11-1','YYYY-MM-DD'));

-----------------------------------------------------------------------------------------------
NVL: 將NULL值轉換成一個實際的值(date,character,number型可以使用)
 ?? null值任何數據運算時都得到一個null值,這里就可以用NVL

select name, sal, comm, (sal*12)+NVL(comm,0) as 年薪 from emp;
comm為員工的提成工資,因為提成可能有,也可能沒有,用NUL這個函數,如果沒提成它的默認值為0

NVL(hiredate,'01-JAN-97') 如果雇傭日期為空,它的默認值為
NVL(job,'no job yet') 如果工作職位為空,默認值為'no job yet'
NVL(comm,0) 提成工資為空,默認值為0

-------------------------------------------------------------------------------------------
Decode功能類似CASE or IF-THEN-ELSE語句
DECODE(col/expression, search1,result1
??????? [,search2,result2,...,]
??????? [default])
?col/expression 值或表達式
?search1 條件1 result1 結果1
?default 沒有符合條件時的默認值

select job,sal,
?????? DECODE(job, 'ANALYSY', sal*1.1,
???? 'CLERK', sal*1.15,
???? 'MANAGER', sal*1.20,
??????????????? sal) 實發工資 from emp;?
(如果job為'ANALYSY',工資為實際工資再加上10%
 如果job為'CLERK',工資為實際工資再加上15%
 如果job為'MANAGER',工資為實際工資再加上20%
 如果job都不符合,工資就為默認值,實際工資sal
 )

-----------------------------------------------------------------
函數嵌套
單行函數可以多重嵌套
select name NVL(to_char(mgr),'No Manager') from emp where mgr is null;
(mgr是上司,如果沒有上司,就返回'No Manager')

------------------------------------------------------------------
Sql plus命令 
? save:將剛執行的sql語句,保存到文件中
??? save 'd:/empsql.txt'; 
?
? clear screen 清屏
?
? get:讀取硬盤中的腳本文件,在plus Sql中顯示其中的內容,并加載到緩存中,并沒有執行,然后運行run才能執行
   get 'd:/empsql.txt';
? @ 'd:/empsql.txt'; 這條語句不僅是把腳本文件讀出來,而且加到緩存中,并執行

? connect system/oracle 連接到本機的system賬號,密碼是oracle
 connect system/oracle@xxx 最后的xxx是oracle的服務器?
?
? 訪問另一個用戶的表(比如當前登入的用戶是teacher)
?? grant select on student 將當前數據庫的select語句功能,授權給student
?? 用student登入的另一個sqlPlus
???? select * from teacher.emp
???? student用戶訪問teacher用戶的emp表
?
? 如果命令前幾個寫母和其它命令沒有重復的,可以簡寫如:connect 可簡寫成conn,run-->r

? exit: 可直接退出sql plus

sqlPlus 中選‘選項’--‘環境變量’
    里面有個autocommit默認是關,通過命令提交事務;如果選擇開,每次的sql語句就都自動提交了。?

總結

以上是生活随笔為你收集整理的oracle学习笔记(二)------函数的全部內容,希望文章能夠幫你解決所遇到的問題。

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