【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 * ...
随机推荐
- C#中的MD5加密
1 using System.Web.Security; 2 string pswd = FormsAuthentication.HashPasswordForStoringInConfigFile ...
- 04.Continue,和三元表达式的学习
立即结束本次循环,判断循环条件,如果成立,则进入下一次循环,否则退出循环. 举例:运动员跑步喝水的例子 比如:我编写代码的时候,上个厕所,回来继续写代码 练习1: namespace _09.练习02 ...
- ActiveReport报表更改连接字符串及参数
PageReport pr = new PageReport (new FileInfo("报表路径")); //报表路径如../Order/OrderSale.rdlx if(p ...
- PAT 1040 Longest Symmetric String
#include <cstdio> #include <cstdlib> using namespace std; ]; ]; int syslen(char str[], i ...
- 微信小程序的button去边框
wxml <button class='niu'>123123</button> css niu::after{ border:none; }
- 2、eclipse中使用Maven
1.导入Maven项目 1.1从spring官网下载示例工程 访问Spring官网 点击[Browse the Guides]即可看到Spring官方为我们提供的很多Demo.
- 解决Tensorflow源码安装的之后TensorBoard 无法使用的问题
作者 cnblog 修雨轩陈 我是按照 Tensorflow 下 https://github.com/tensorflow/tensorflow/blob/master/tensorflow/g3 ...
- Write a makefile to compile *.c and link to executable target
https://wenku.baidu.com/view/b1ec946027d3240c8447ef9a.html GNU+make中文手册V3.8 <=========From Docs== ...
- ACCESS模糊查询注意事项
ACCESS模糊查询出现的问题,开发中需要注意!在SQL Server中模糊查询通常是这样的Select * from articleTable where authorName like '%jac ...
- Third week-homework(员工管理系统)
需求: 可以查询员工所有信息 可以修改员工信息 可以增加新员工 code: import sys,json # yuangong = { # "1": ["faker&q ...