接收字符返回字符或數(shù)值時可以使用dual偽表
10年積累的成都網(wǎng)站設(shè)計、網(wǎng)站制作經(jīng)驗(yàn),可以快速應(yīng)對客戶對網(wǎng)站的新想法和需求。提供各種問題對應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識你,你也不認(rèn)識我。但先網(wǎng)站設(shè)計后付款的網(wǎng)站建設(shè)流程,更有正定免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。
1、把小寫字符轉(zhuǎn)換成大寫
select supper(“smi”) form dual
2、把大寫轉(zhuǎn)換成小寫
lower(“SMI”)
3、首字母大寫
initcap(“smi”)
4、字符串的連接可以使用concat,也可以使用? ? 建議使用
concat(“hello”“world”) 結(jié)果為helloworld
5、字符串的截取,使用substr,第一個參數(shù)為字符串,第二個參數(shù)是索引,第三個參數(shù)結(jié)束索引(開始索引使用0和1效果一樣)
substr(hello,0,3) 結(jié)果為hel
6、獲取字符串長度
length(“hello”)
7、字符串替換,第二個參數(shù)為被替換的字符串,第三個是替換的字符串
replace(“hello”,“l(fā)”,“x”) 結(jié)果為hexxo
1、四舍五入函數(shù)ROUND()
默認(rèn)取整,可以指定保留位數(shù)
round(12.523)? 結(jié)果為13
round(12.537,2) 結(jié)果為12.54
2、取整TRUNC
默認(rèn)全部去掉小數(shù),可以指定位數(shù)
trunc(12.789) 結(jié)果為12
3、取余數(shù)MOD
mod(10,3) 結(jié)果為1
oracle中提供了很多和日期相關(guān)的函數(shù),包括日期的加減
日期 - 數(shù)字 =日期
日期 - 日期 = 數(shù)字(天)
1、如:查詢員工進(jìn)入公司的走數(shù)
(sysdate - 入職日期)/7
注:當(dāng)前日期查詢select sysdate form dual
2、查詢所有員工進(jìn)入公司的月數(shù)
獲取兩個時間段的月數(shù)使用months_between(sysdate,入職日期)
3、獲取幾個月后的日期:add_months()
如:獲取員工三個月后的日期
add_months(sysdate,3)
4、如求出下星期一是什么時候
指定給出下次某日期數(shù)next_date()
next_date(sysdate,“星期一”)
5、求日期的最后一天last_day()
求出本月的最后一天
last_day(sysdate)
1、to_char字符串轉(zhuǎn)換函數(shù)
如:將所有員工的入職日期的年、月分開
注:在劃分時需要通配符
年:yyyy? 月:mm? 日:dd
時:HH 分:mi? 秒:ss
定義時間格式
to_char(sysdate,“yyyy-mm-dd HH24:mi:ss”)
在10以下的月數(shù)前面會默認(rèn)加上前導(dǎo)零,去除加上fm
to_char(sysdate,“fmyyyy-mm-dd HH24:mi:ss”)
to_char還可以給數(shù)字做格式化
如將員工的工資按三位“,”分隔
to_char(工資,“99,999”) 9代表數(shù)字
如果想在錢上加上國家符號
美元使用
中文使用l
to_char(工資,“99,999”)
to_char(工資,“l(fā)99,999”)
2、to_number數(shù)值轉(zhuǎn)換函數(shù),將字符串轉(zhuǎn)換成數(shù)值
to_number(“10”) +to_number(“10”)
3、to_date日期轉(zhuǎn)換函數(shù),將字符串?dāng)?shù)據(jù)轉(zhuǎn)換成日期類型
to_date(“1997-05-12”,“YYYY-mm-dd”)? 1997/05/12
1、空值處理 nvl
如果在查詢的時候存在空值的情況可以使用
nvl(comm,0) 當(dāng)comm的列值為空時,用0代替
2、decode函數(shù)
該函數(shù)類似于if ...else if ...else
語法:decode(列名/值,search1,result1,search2,result2,default)
decode(中國,中國,我是中國,美國,我是美國,其他)
如果為中國返回我是中國,為美國返回我是美國,為其他字符則返回其他。
3、case when 與decode差不多
語法 case when city=中國 then 我是中國
? ? ? ? ? when city=美國 then 我是美國
? ? ? ? ? ? else 其他
Oracle讀取數(shù)據(jù)的最大限制取決于操作系統(tǒng)和Oracle對多塊讀IO的限制。在物理上來說,一個SQL語句要讀取某個記錄,必須將該記錄讀取到DB CACHE中,然后才能從DB CACHE中獲取,這種訪問我們一般稱為物理讀(READ),如果這個數(shù)據(jù)已經(jīng)存在于DB CACHE中,那么前臺進(jìn)程可以直接從DB CACHE中讀取數(shù)據(jù),這樣的讀取成為邏輯讀(GET),如果要讀取的數(shù)據(jù)已經(jīng)被修改,需要從UNDO中讀取前映像來獲取一致性的數(shù)據(jù),那么會從UNDO中取出前映像,和當(dāng)前的數(shù)據(jù)塊一起形成一個一致性讀塊(CR BLOCK),然后再從CR BLOCK中讀取數(shù)據(jù),這種訪問方式稱為一致性讀(CR GET)。 從邏輯上講, Oracle讀取數(shù)據(jù)通過三種途徑:全表掃描( Full Table Sacn,FTS )、引掃描、通過ROWID直接訪問。在閱讀SQL執(zhí)行計劃的時候,可以通過 TABLE ACCESS子句來查看Oracle訪問某個表的方法,一般來說,對于大型的表來說,如果出現(xiàn) TABLE ACCESS FULL 的提示,是需要加以重視的,一般情況下,對于大表的全表掃描應(yīng)該是盡量避免的。下面是一個簡單的執(zhí)行計劃:Query Plan----------------------------------------- SELECT STATEMENT [CHOOSE] Cost=1234 TABLE ACCESS FULL LARGE [:Q65001] [ANALYZED]查看SQL的執(zhí)行計劃的時候,最右邊的,最上面的操作是首先被執(zhí)行的,上面的例子只有一個操作,就是對表“LARGE”進(jìn)行全表掃描。當(dāng)這個步驟執(zhí)行完畢后,就會將結(jié)果集返回給上面一層的語句,上面的例子就是 SELECT STATEMENT 這個語句,一般來說 SELECT STATEMENT 是整個執(zhí)行計劃的頂層。 [CHOOSE]表明這個SQL語句的OPTIMIZER_GOAL ,在這個提示的右側(cè)是COST數(shù)據(jù),如果COST是有實(shí)際值的,那么說明使用了CBO優(yōu)化器,如果COST沒有實(shí)際值,那么說明使用了RBO優(yōu)化器。比如: SELECT STATEMENT [CHOOSE] Cost=COST只是一個相對的值,只是優(yōu)化器用來分析訪問路徑的優(yōu)劣的,相同的SQL, COST越小的執(zhí)行計劃,起執(zhí)行效果越好,開銷越小。而不同的SQL ,其COST值是沒有可比性的。 [:Q65001]指明這部分操作被采用并行查詢的方式執(zhí)行,
1、?在計算機(jī)中,打開Oracle的連接程序,用新建的數(shù)據(jù)庫管理員,選擇【SQL工作表】。
2、?? 接著,在【Oracle服務(wù)器】的窗口上,在輸入窗口中輸入SQL查詢語句,并單擊【執(zhí)行】按鈕,可以看到表格當(dāng)前的數(shù)據(jù)。
3、?然后,在【SQL工作表】的窗口上,輸入取子串函數(shù)的SQL語句,可以作為參考。
4、接著,在【SQL工作表】的窗口上,輸入取子串函數(shù)的SQL語句,并單擊【執(zhí)行】按鈕。
5、?然后,在【SQL工作表】的窗口上,可以看到表格顯示的數(shù)據(jù)。
6、最后,在【SQL工作表】的窗口上,修改取子串函數(shù)的參數(shù),執(zhí)行SQL語句,就完成了。
如果Oracle版本不是太低的話,使用 正則表達(dá)式函數(shù) REGEXP_SUBSTR 處理。\x0d\x0a\x0d\x0a5個參數(shù)\x0d\x0a第一個是輸入的字符串\x0d\x0a第二個是正則表達(dá)式\x0d\x0a第三個是標(biāo)識從第幾個字符開始正則表達(dá)式匹配。(默認(rèn)為1)\x0d\x0a第四個是標(biāo)識第幾個匹配組。(默認(rèn)為1)\x0d\x0a第五個是是取值范圍:\x0d\x0ai:大小寫不敏感;\x0d\x0ac:大小寫敏感;\x0d\x0an:點(diǎn)號 . 不匹配換行符號;\x0d\x0am:多行模式;\x0d\x0ax:擴(kuò)展模式,忽略正則表達(dá)式中的空白字符。\x0d\x0a\x0d\x0aSQL SELECT\x0d\x0a 2 REGEXP_SUBSTR(a,'[0-9]+')\x0d\x0a 3 FROM\x0d\x0a 4 test_reg_substr\x0d\x0a 5 WHERE\x0d\x0a 6 REGEXP_LIKE(a, '[0-9]+');