oracle未授权sql查询,【oracle使用笔记3】sql查询遇到的若干问题总结
在整個開發過程當中,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 ? 等同于 ? ?目標字符串后綴模糊匹配
根據實際使用的狀況來看,兩者區別有幾點:
當表的數據量很大時(千萬級),使用like關鍵字查詢至關慢,而使用instr()相對快一些,性能明顯優于like關鍵字
在數據量大的且常常用來查詢的表字段上加索引,使用instr()模糊匹配的效率會更好
【查詢四】:條件語句查詢
最經常使用的就是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 等判斷
未完待續.....
總結
以上是生活随笔為你收集整理的oracle未授权sql查询,【oracle使用笔记3】sql查询遇到的若干问题总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux uefi无法启动文件,解决U
- 下一篇: ubuntu nginx添加站点配置失效