Oracle空串与null的处理
来源于:http://blog.itpub.net/24870090/viewspace-1057853/
Oracle空串与null的处理[@more@]
Oracle中的空字符串基本上是被当成空NULL来处理的,我们可以从下面的得到印证。
select nvl('','NULL') from dual 返回'NULL',select 1 from dual where '' is null 返回1。
如果我们在往数据表里插数据的时候,把某个值赋成空串(''),而查询条件加入了诸如col_x = ''等条件的话,结果是无法查出来的。
反过来,在使用||连接符时,NULL值又被当作空串来使用。select NULL || 'XX' from dual将返回串'XX'。
然而,空串''与空值NULL还是有些区别的,'' = ''返回的结果为真,而NULL = ''将返回空;'' is NULL 不报错,而NULL is '' 将发生找不到关键字NULL的错误。
处理:
1、缺省处理
Oracle在Order by 时缺省认为null是最大值,所以如果是ASC升序则排在最后,DESC降序则排在最前
2、使用nvl函数
nvl函数可以将输入参数为空时转换为一特定值,如
nvl(employee_name,’张三’)表示当employee_name为空时则返回’张三’,如果不为空则返回employee_name
通过这个函数可以定制null的排序位置。
3、使用decode函数
decode函数比nvl函数更强大,同样它也可以将输入参数为空时转换为一特定值,如
decode(employee_name,null,’张三’, employee_name)表示当employee_name为空时则返回’张三’,如果不为空则返回employee_name
通过这个函数可以定制null的排序位置。
4、使用case 语法
Case语法是Oracle 9i后开始支持的,是一个比较灵活的语法,同样在排序中也可以应用
如:
select *
from employee
order by (case employee_name
when null then
'张三'
else
employee_name
end)
表示当employee_name为空时则返回’张三’,如果不为空则返回employee_name
通过case语法同样可以定制null的排序位置。
5、使用nulls first 或者nulls last 语法
Nulls first和nulls last是Oracle Order by支持的语法
如果Order by 中指定了表达式Nulls first则表示null值的记录将排在最前(不管是asc 还是 desc)
如果Order by 中指定了表达式Nulls last则表示null值的记录将排在最后 (不管是asc 还是 desc)
使用语法如下:
--将nulls始终放在最前
select * from zl_cbqc order by cb_ld nulls first
--将nulls始终放在最后
select * from zl_cbqc order by cb_ld desc nulls last
Oracle空串与null的处理的更多相关文章
- Oracle中的NULL、’’(空字符串)以及’_’(空格)
本文首发于 http://youngzy.com/ 在Oracle中使用 null,''(空字符串),'_'(空格)时,有没有遇到问题?产生疑惑? null和’’(空字符串)是一个意思 注: 为了便于 ...
- SQL升级Oracle挖的Null坑,你懂的!
最近公司做系统数据库升级,主要由原来的SQL数据库升级Oracle数据库,对于拥有千万级数据库的实用系统来说,迁移不是件容易的时,光数据同步就需要很久,更别说要修改升级原来的SQL库使用的存储过程和视 ...
- oracle 中的null与''
1.先看看Null与''在oracle中的表现 C:\Users\zen>sqlplus hr/hr SQL Production :: Copyright (c) , , Oracle. Al ...
- 【转】oracle中的NULL、''(空字符串)以及'_'(空格)
在Oracle中使用null,''(空字符串),'_'(空格)时,有没有遇到问题?产生疑惑? 1.NULL和''(空字符串)是一个意思 注:为了便于区分空字符串和空格,下面的示例均以'_'代表空格. ...
- 不同Json工具对空串和NULL的序列号处理:net.sf.json 和 fastjson
目录 1.测试代码 2.测试结果: 3.总结: 4.注:Maven中引入net.sf.json的方式 net.sf.json 和 fastjson 对于空串和NULL的处理: 1.测试代码 packa ...
- oracle之简null空值问题,用nvl(a,b)函数解决
oracle之简null空值问题,用nvl(a,b)函数解决 原文链接:https://blog.csdn.net/u013821825/article/details/48766749 oracle ...
- oracle 空值与 null
Oracle中的空字符串基本上是被当成空NULL来处理的,我们可以从下面的得到印证. select nvl('','NULL') from dual 返回 'NULL' select ...
- 【转】Oracle索引列NULL值引发执行计划该表的测试示例
有时开发进行表结构设计,对表字段是否为空过于随意,出现诸如id1=id2,如果允许字段为空,因为Oracle中空值并不等于空值,有可能得到意料之外的结果.除此之外,最关键的是,NULL会影响oracl ...
- Oracle中的null
测试数据:公司部分员工基本信息
随机推荐
- .net 操作sftp服务器
因为项目的需要,整理了一段C#操作sftp的方法. 依赖的第三方类库名称为:SharpSSH 1.1.1.13. 代码如下: 1: using System; 2: using System.Coll ...
- 使用中国版 Office 365 -- Team Site分享
Team Site(工作组网站)主要用于团队内部的协同工作,团队(组织机构)内部每个需要使用Team Site的用户都需要一个Office 365的license.但是如果我们需要将Team Site ...
- javaScript事件(五)事件类型之鼠标事件
一.事件 二.事件流 以上内容见:javaScript事件(一)事件流 三.事件处理程序 四.IE事件处理程序 以上内容见javaScript事件(二)事件处理程序 五.事件对象 以上内容见javaS ...
- 在Docker中运行web应用
启动一个简单的web 应用 使用社区提供的模板,启动一个简单的web应用,熟悉下各种Docker命令的使用: # docker run -d -P training/webapp python app ...
- 银狐云服务架构V0.1
首先这套程序是由JAVA开发的,为什么使用JAVA? 因为在本人的几年开发经历中,JDK在各种服务器上安装都很顺利, JAVA程序运行稳定,接口名不经常变动等,各种开源类库提升开发效率,给本人以信心, ...
- JAVA代码中加了Try...Catch的执行顺序
public static String getString(){ try { //return "a" + 1/0; return "a"; } catch ...
- java 26 - 6 网络编程之 TCP协议 传输思路 以及 代码
TCP传输 Socket和ServerSocket 建立客户端和服务器 建立连接后,通过Socket中的IO流进行数据的传输 关闭socket 同样,客户端与服务器是两个独立的应用程序 TCP协议发送 ...
- Zygote进程【2】——Zygote的分裂
在Zygote的诞生一文中init进程是如何一步步创建Zygote进程的,也了解了Zygote的进程的作用.Zygote进程的诞生对于整个Java世界可以说有着"开天辟地"的作用, ...
- sublime和python
<转载> 使用 Sublime 工具时报Decode error - output not utf-8解决办法 打开Python.sublime-build文件,并添加"en ...
- 苹果iPhone如何区分港版、国行、水货
要想分辨所购买的苹果产品[iPhone 4.iPod Touch.iPad 2.iMac.MacBook及iPhone 4S]是大陆行货.水货.港货还是其它,其实很简单.今天来教大家如何区分.大陆行货 ...