Oracle空串与null的处理

摘要:
如果在将数据插入数据表时为空字符串(“”)赋值,并且查询条件添加了一个值,例如col_如果x=“”并且满足其他条件,则无法找到结果。相反,当使用||连接器时,NULL值用作空字符串。处理:1.默认情况下,当Oracle为Orderby时,默认值为null,因此如果ASC为升序,则为最后一个,DESC为降序,则为第一个。2.nvl函数可用于在输入参数为空时将其转换为特定值。例如,nvl表示当employee_ name为空时,返回张三;如果没有,则返回员工_姓名可以通过此函数自定义空的排序位置。

来源于: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的处理》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇纯手工秒杀VM,SE等虚拟机Handlearcgis api的三种查询实现下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

oracle非归档模式下的冷备份和恢复

查看归档的相关信息 SQL> archive log list数据库日志模式 非存档模式自动存档 禁用存档终点 USE_DB_RECOVERY_FILE_DEST最早的联机日志序列 72当前日志序列 74 备份中常用的术语解释: 冷备份(脱机备份): 数据库处于关闭状态下所做的物理拷贝。数据库处于非归档模式下只能使用这种方法备份。 数据库全备份:备份...

Oracle之物化视图

来源于:http://www.cnblogs.com/Ronger/archive/2012/03/28/2420962.html 近期根据项目业务需要对oracle的物化视图有所接触,在网上搜寻关于这方面的资料,便于提高,整理内容如下: 物化视图是一种特殊的物理表,“物化”(Materialized)视图是相对普通视图而言的。普通视图是虚拟表,应用的局限...

python 连接oracle数据库:cx_Oracle

注意:64位操作系统必须安装64位oracle客户端,否则会连接报错 安装第三方库:cx_Oracle 一、连接数据库的三种方式: 1、cx_Oracle.connect('账号/密码@ip:端口/数据库实例名') 2、cx_Oracle.connect('账号', '密码', 'ip:端口/数据库实例名') 3、tns = cx_Oracle.maked...

oracle高级部分

回顾 多表关联查询的方式内连接 根据AB表关联的条件进行过滤查询,只保留满足条件数据 Select * from a,b where a.xxx=b.xxx;     Select * from a inner join b on a.xxx=b.xxxx     inner join c on a.xxxx=c.xxxx 外连接 左外连接 以左表为...

安装Oracle时选择桌面类和服务器类的区别

桌面类――这种安装方式一般适用于台式机和笔记本。它包含一个最小数据库和最低的配置需求。服务器类――这种安装方式适用于服务器,例如,它会向您提供数据中心和用于支持企业级的应用程序。如果您需要使用高级配置选项,请选择此安装类型。在桌面类中,只有基本选择项。在服务器类,您可以选择标准安装(仅让您作有基本选择)或高级安装。在桌面类或典型安装中,Oracle数据库将...

oracle 数据库备份 cmd 命令

语句:exp SDE/SDE@IP:1521/orcl FILE=C:数据库备份sde%date:~0,4%%date:~5,2%%date:~8,2%.dmp  COMPRESS=y direct=y log=C:数据库备份logsde%date:~0,4%%date:~5,2%%date:~8,2%.log 在这里主要要保证C盘下有数据库备份和数据库备...