在整个开发过程当中,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 等判断
未完待续.....