oracle未授权sql查询,【oracle使用笔记3】sql查询遇到的若干问题总结
在整個(gè)開發(fā)過程當(dāng)中,sql查詢操做的頻率比較高,在不一樣的業(yè)務(wù)場景下會(huì)出現(xiàn)不一樣的查詢需求,如下是我在項(xiàng)目中遇到的查詢需求,總結(jié)一下。sql
【查詢一】:取查詢出的第一條數(shù)據(jù)oracle
select?*?from?(select? * from??[tableName]? order? by? [key] asc/desc ) where? rownum = 1函數(shù)
【查詢二】:查詢數(shù)值數(shù)據(jù)時(shí),小于0的數(shù)值,小數(shù)點(diǎn)前的0須要顯示性能
Oracle中對于數(shù)值的數(shù)據(jù),小于0時(shí)小數(shù)點(diǎn)前的0不顯示,如:.9,實(shí)際查詢操做中須要顯示為:0.9 ;一樣,若是小數(shù)點(diǎn)后有0也會(huì)被Oracle隱藏,如0.20會(huì)顯示0.2spa
【思路】:使用to_char()函數(shù)將數(shù)值類型轉(zhuǎn)為字符類型處理,如:to_char(0.4, 'fm990.09'),結(jié)果會(huì)顯示0.4,而不是 .4?;code
【注】:格式fm90.09或fm99990.0099或fm999999990.000099999等等是由數(shù)據(jù)的大小而設(shè)定的,如“'fm99990.0099'”會(huì)顯示0.40?,能夠動(dòng)手試一試,取本身須要的格式索引
【查詢?nèi)?#xff1a;模糊匹配查詢開發(fā)
在SQL中,一般使用like進(jìn)行模糊匹配搜索,也能夠用oracle中的instr()函數(shù),做為模糊匹配時(shí),該函數(shù)語法為:字符串
instr(源字符串,目標(biāo)字符串)>0 ? ?等同于 ? ?源字符串 like ‘%目標(biāo)字符串%’table
instr(源字符串,目標(biāo)字符串)=0 ? ?等同于 ? ?取反(not ?like)
instr(源字符串,目標(biāo)字符串)=1 ? 等同于 ? ?目標(biāo)字符串后綴模糊匹配
根據(jù)實(shí)際使用的狀況來看,兩者區(qū)別有幾點(diǎn):
當(dāng)表的數(shù)據(jù)量很大時(shí)(千萬級),使用like關(guān)鍵字查詢至關(guān)慢,而使用instr()相對快一些,性能明顯優(yōu)于like關(guān)鍵字
在數(shù)據(jù)量大的且常常用來查詢的表字段上加索引,使用instr()模糊匹配的效率會(huì)更好
【查詢四】:條件語句查詢
最經(jīng)常使用的就是decode()和case..when..then,decode()函數(shù)使用比較簡單,case..when..then比較復(fù)雜但很靈活
1.decode()函數(shù):
語法:select ?decode(條件,值1,返回值1,值2,返回值2,…….,缺省值)from dual
結(jié)合sign()函數(shù)能夠比較大小: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 ?條件表達(dá)式1 ? then 返回值1 ? when ??條件表達(dá)式2 ? then ? 返回值2 ? else ?其余返回值 ?end
3. 總結(jié):decode()函數(shù)只能用作相等判斷,可是能夠配合sign函數(shù)進(jìn)行大于,小于,等于的判斷,CASE when可用于=,>=,,is null,is not null 等判斷
未完待續(xù).....
總結(jié)
以上是生活随笔為你收集整理的oracle未授权sql查询,【oracle使用笔记3】sql查询遇到的若干问题总结的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux uefi无法启动文件,解决U
- 下一篇: ubuntu nginx添加站点配置失效