【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 * ...
随机推荐
- Video标签事件与属性
事件与属性 属性 描述 audioTracks 返回可用的音轨列表(MultipleTrackList对象) autoplay 媒体加载后自动播放 buffered 返回缓冲部件的时间范围(TimeR ...
- 融云会话界面导航上移-使用IQKeyboardManager
关于IQKeyBoardManager挤出导航栏的解决方案 方法一: 写在前面 虽然修改后能解决导航栏被挤出去的问题,但是就目前来看是有副作用的,写这篇文章就是想大家来一起讨论,毕竟键盘处理还是比较头 ...
- 【学习笔记】Java实用类:枚举(Enum)
Java API(Java Application Programming Interface)Java应用程序编程接口... 实用类:Java API提供了几个常用包: 1.java.lang:编写 ...
- jquery toggle(listenerOdd, listenerEven)
1. example: <!DOCTYPE HTML><html> <head></head> <body> &l ...
- 常见的media断点
landscape mode是指宽度比高度宽的模式,也就是俗称的宽屏模式: portrait mode是指高度比宽度高的模式,也就是俗称的竖屏模式: /*#region SmartPhones */ ...
- vue使用qrcode生成二维码,可以自定义大小
1,qrcanvas-vue插件,https://gera2ld.github.io/qrcanvas-vue/#logo.只支持像素大小的二维码 2,qrcode支持移动端自定义大小二维码 &quo ...
- es6变量解构赋值的用途
这里是我觉得es6解构赋值,在平时我们写js的时候非常有用,而且经常用到的地方,能简化我们的代码,让写代码简介优雅易读; 用途 1.交换变量的值,太方便了这逼,写法不仅简介而且一看就明白 let [x ...
- R语言计算相关矩阵然后将计算结果输出到CSV文件
R语言计算出一个N个属性的相关矩阵(),然后再将相关矩阵输出到CSV文件. 读入的数据文件格式如下图所示: R程序采用如下语句: data<-read.csv("I:\\SB\land ...
- 《ArcGIS Runtime SDK for Android开发笔记》——离在线一体化技术:概述
1.前言 数据生产和数据展示是常见的两大专业级移动GIS应用场景,这里我们针对数据生产环节的ArcGIS的离在线一体化技术给大家做一个基本的介绍和梳理. 使用ArcGIS离在线一体化技术首先需要以下基 ...
- MonkeyRunnermac
http://blog.csdn.net/wyb199026/article/details/51436754 背景 之前想学习自动化测试的时候,就研究过MonkeyRunner,说实话MonkeyR ...