在整個開發過程當中,sql查詢操做的頻率比較高,在不一樣的業務場景下會出現不一樣的查詢需求,如下是我在項目中遇到的查詢需求,總結一下。sql
【查詢一】:取查詢出的第一條數據oracle
select * from (select * from [tableName] order by [key] asc/desc ) where rownum = 1函數
【查詢二】:查詢數值數據時,小於0的數值,小數點前的0須要顯示性能
Oracle中對於數值的數據,小於0時小數點前的0不顯示,如:.9,實際查詢操做中須要顯示爲:0.9 ;一樣,若是小數點後有0也會被Oracle隱藏,如0.20會顯示0.2spa
【思路】:使用to_char()函數將數值類型轉爲字符類型處理,如:to_char(0.4, 'fm990.09'),結果會顯示0.4,而不是 .4 ;code
【注】:格式fm90.09或fm99990.0099或fm999999990.000099999等等是由數據的大小而設定的,如「'fm99990.0099'」會顯示0.40 ,能夠動手試一試,取本身須要的格式索引
【查詢三】:模糊匹配查詢開發
在SQL中,一般使用like進行模糊匹配搜索,也能夠用oracle中的instr()函數,做爲模糊匹配時,該函數語法爲:字符串
instr(源字符串,目標字符串)>0 等同於 源字符串 like ‘%目標字符串%’table
instr(源字符串,目標字符串)=0 等同於 取反(not like)
instr(源字符串,目標字符串)=1 等同於 目標字符串後綴模糊匹配
根據實際使用的狀況來看,兩者區別有幾點:
【查詢四】:條件語句查詢
最經常使用的就是decode()和case..when..then,decode()函數使用比較簡單,case..when..then比較複雜但很靈活
1.decode()函數:
語法:select decode(條件,值1,返回值1,值2,返回值2,…….,缺省值)from dual
結合sign()函數能夠比較大小:select decode(sign(arg1-arg2),-1,arg1,arg2) from dual
2.case..when..then的2種用法:
case(條件) when 條件1 then 返回值1 when 條件2 then 返回值2 else 其餘返回值
case when 條件表達式1 then 返回值1 when 條件表達式2 then 返回值2 else 其餘返回值 end
3. 總結:decode()函數只能用作相等判斷,可是能夠配合sign函數進行大於,小於,等於的判斷,CASE when可用於=,>=,<,<=,<>,is null,is not null 等判斷
未完待續.....