【oracle使用笔记3】sql查询遇到的若干问题总结
在整个开发过程中,sql查询操作的频率比较高,在不同的业务场景下会出现不同的查询需求,以下是我在项目中遇到的查询需求,总结一下。
【查询一】:取查询出的第一条数据
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.2
【思路】:使用to_char()函数将数值类型转为字符类型处理,如:to_char(0.4, 'fm990.09'),结果会显示0.4,而不是 .4 ;
【注】:格式fm90.09或fm99990.0099或fm999999990.000099999等等是由数据的大小而设定的,如“'fm99990.0099'”会显示0.40 ,可以动手试一试,取自己需要的格式
【查询三】:模糊匹配查询
在SQL中,通常使用like进行模糊匹配搜索,也可以用oracle中的instr()函数,作为模糊匹配时,该函数语法为:
instr(源字符串,目标字符串)>0 等同于 源字符串 like ‘%目标字符串%’
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使用笔记3】sql查询遇到的若干问题总结的更多相关文章
- Oracle学习笔记三 SQL命令
SQL简介 SQL 支持下列类别的命令: 1.数据定义语言(DDL) 2.数据操纵语言(DML) 3.事务控制语言(TCL) 4.数据控制语言(DCL)
- 感恩笔记之SQL查询功能最简使用模板
感恩笔记之SQL查询功能最简使用模板 第一部分:SQL单表功能 1 语句主要关键字 SELECT --查询数据列 INTO --新建数据表 FROM --查询数据表 WHERE --筛选数据表结果 O ...
- Oracle学习笔记五 SQL命令(三):Group by、排序、连接查询、子查询、分页
GROUP BY和HAVING子句 GROUP BY子句 用于将信息划分为更小的组每一组行返回针对该组的单个结果 --统计每个部门的人数: Select count(*) from emp group ...
- Oracle学习笔记六 SQL常用函数
函数的分类 Oracle 提供一系列用于执行特定操作的函数 SQL 函数带有一个或多个参数并返回一个值 以下是SQL函数的分类:
- Oracle学习笔记四 SQL命令(二):SQL操作语言类别
SQL分为下列语言类别 1.数据定义语言(DDL) Create.Alter.Drop 2.数据操纵语言(DML) Insert.Select.Delete.Update 3.事务控制语言(TCL) ...
- Oracle学习笔记_07_模糊查询
附录:参考资料 1.Oracle sql语言模糊查询--like后面的通配符 2.oracle sql语言模糊查询--通配符like的使用教程
- oracle 入门笔记--v$sql和v$sqlarea视图(转载)
转载于作者:dbtan 原文链接:http://www.dbtan.com/2009/12/vsql-and-vsqlarea-view.html v$sql和v$sqlarea视图: 上文提到,v$ ...
- oracle 开发笔记“跨数据库查询复制”
1.方法一:创建DBL(data base link) CREATE PUBLIC DATABASE LINK 数据链名称 CONNECT TO 登陆用户名 IDENTIFIED BY 密码 USIN ...
- Oracle表明明存在SQL查询数据提示表不存在异常
今天同事遇到一个很奇怪的问题,恢复了一个数据库,表明明存在,用PLSQL和sqlplus都试过了,SQL语句select * from 表名,查询数据,却提示表名不存在异常 然而,使用select * ...
随机推荐
- nopCommerce 3.9 版本发行
NopCommerce中文信息地址:http://www.nopcn.com/nopcommerce39-blog-release-notes.html NopCommerce英文地址:http:// ...
- Vue表格中,对数据进行转换、处理
众所周知,后端从Mysql取出的数据,一般是很难单独处理某一个Key的数据的(需要处理的话,可能会浪费大量的性能.而且对页面加载时间有很大的影响),所以,从数据库取出的数据.只能由前端进行处理.但是在 ...
- 如何在web.config文件中配置Session变量的生命周期
实例说明:在网上购物商城中,为了维护在线购物环境,一般只有注册会员才可以购买商品.实现购物功能时,先通过Session变量记录会员的登录名,然后在购买商品页面通过判断会员是否登录确定其能否购买商品. ...
- Instance Segmentation入门总结
前一阵子好忙啊,好久没更新了.最近正好挖了新坑,来更新下.因为之前是做检测的,而目前课题顺道偏到了instance segmentation,这篇文章简单梳理一下从检测.分割结果到instance s ...
- 使用weinre调试Web应用及PhoneGap应用
Web开发者经常使用Firefox的firebug或者Chrome的开发人员工具进行Web调试,包括针对JavaScript,DOM元素和CSS样式的调试.但是,当我们期望为移动Web站点或应用进行调 ...
- web Worker基本使用
web worker 使用 web worker 是现代浏览器具有的可以处理密集型任务非常便利的解决方案,众所周知,JavaScript是单线程的(一个JavaScript引擎实例只能占用一个线程,线 ...
- 用 dbgrid 或 dbgrideh 如何让所显示数据自动滚动
procedure TForm1.Timer1Timer(Sender: TObject);varm:tmessage;begin m.Msg:=WM_VSCROLL; m.WParamLo:=SB_ ...
- May 21st 2017 Week 21st Sunday
The smallest deed is better than the greatest intention. 最微小的行动胜过最伟大的打算. Several years ago, just aft ...
- 转一个csdn看到的帖子:而立之年的程序猿失业了 [问题点数:0分,结帖人jinxingfeng_cn]
http://bbs.csdn.net/topics/390612263?page=1#post-395768948
- 关于selenium无法定位动态元素的解决方法
今天在写一个关于登录的自动化脚本时,在对元素定位时总会报下面的错: