oracle null和空字符串,数据库 – Oracle不区分null和空字符串?

Oracle非常非常老.

早在80年代,当它被开发(并且在有任何标准之前)他们认为是一个好主意,然后给Oracle Oracle存储它的价值观,这真的是.

Oracle存储数据的方式如下(取自documentation):

没有数据类型存储在数据中,只有数据长度和数据本身.

如果两列之间出现NULL,则将其存储为一个单字节,表示列的长度为0(实际上为0xFF).尾随的空值根本不存储.

所以要存储值’test’,Oracle需要存储5个字节:04 74 65 73 74.

但是,要存储空字符串和NULL,Oracle只需要将数据长度设置为0.

如果您的数据要存储在每个成本为5,000美元的20 Mb硬盘驱动器上,则非常聪明.

后来,当标准出现的时候,这不是一个好主意,但那时候已经有很多很多代码依赖于NULL,并且“是一回事.

使VARCHAR做这样的区别会打破大量的代码.

要修复它,他们将VARCHAR重命名为VARCHAR2(这不是任何标准的一部分),表示VARCHAR2将永远不会区分NULL和空字符串,并敦促所有人使用此数据类型.

现在他们可能在等待Oracle数据库中使用VARCHAR的最后一个人死亡.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值