工作中:如何在实际工作中处理 NULL,并给出一些指南
如何在实际工作中处理 NULL,并给出一些指南
2.9 消灭 NULL 委员会
本节将从 NULL 的问题讲起,主要介绍一些避免问题的具体方法。不 过这些方法执行起来非常简单,只需在设计的时候稍微注意一下就行,因 此这里不作详细讲解。本节将揭示这些方法,当然笔者也希望大家都加入 到消灭 NULL 的运动中来
为什么 NULL 如此惹人讨厌
- 在进行 SQL 编码时,必须考虑违反人类直觉的三值逻辑。
- 在指定 IS NULL、 IS NOT NULL 的时候,不会用到索引SQL 语句执行起来性能低下。
- 如果四则运算以及 SQL 函数的参数中包含 NULL,会引起“NULL的传播”。
- .在接收 SQL 查询结果的宿主语言中, NULL 的处理方法没有统一标准。
- 与一般列的值不同, NULL 是通过在数据行的某处加上多余的位(bit)来实现的。因此 NULL 会使程序占据更多的存储空间,使得检索性能变差.
无法完全消除 NULL 的原因是它扎根于关系数据库的底层中。仅仅靠
在表中所有列加上 NOT NULL 的约束是不够的。因为即使这样做,在使用
外连接,或者 SQL-99 中添加的带 CUBE 或 ROLLUP 的 GROUP BY 时,还是很
容易引入 NULL 的。因此我们能做的最多也只是“尽量”去避免 NULL 的产生。
实际上,如果合理利用, NULL 还是有很多非常方便的用途的。但问题是,“合
理使用”NULL 正是最困难的地方。 NULL 最恐怖的地方就在于即使你认为自
己已经完全驾驭它了,但还是一不小心就会被它在背后捅一刀.
我们可以把 NULL 视为一种药品:适当使用可能有益,但滥用会导致毁灭。
最好的策略是尽可能地避免适用 NULL,并在不得不使用时适当使用。
接下来我们分几个场景来讨论一下消除 NULL 的具体做法.
1 编号 : 使用异常编号
2 名字 : 使用“无名氏”
3 数值 : 用 0 代替
因此更加可行的方案是下面这样的方案。
- 转换为 0。
- 如果一定要区分 0 和 NULL,那么允许使用 NULL。
- 如果能转换为 0,希望大家还是尽量把 NULL 转换为 0。
4 日期 : 用最大值或最小值代替
结束语:至此,我们分 4 种数据类型介绍了消除 NULL 的具体方法,这里总结如下。
(1) 首先分析能不能设置默认值。
(2)仅在无论如何都无法设置默认值时允许使用 NULL
工作中:如何在实际工作中处理 NULL,并给出一些指南相关推荐
- 工作事件五点作法和网络中所产生的Winsock连接与互动
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任. http://1572091hyl10.blog.51cto.com/1562091/6626 ...
- Science:“每周工作进展汇报”在博士培养中的作用
编译自<Science>2021年12月3日.阅读原文请点击文后的"阅读原文" https://www.science.org/content/article/my-p ...
- 查询qt中的数据_EXCEL在多表中查询数据(函数中引用工作表的办法)
与EXCEL打交道也好几年了,你是不是还停留在经常性简单而重复的工作呢?每月忙的时候天天加班,空闲的时候盯着手机刷刷刷,,既然如此,轻松的时候就应该琢磨下怎样提升效率,比如规范好自己的数据源,设计一套 ...
- 保险运用计算机的工作干什么,关于计算机在保险业务中的应用研究
张福斌 侯悦 吴婷婷 [摘要]随着我国社会经济的不断发展,科学技术水平也有了一定程度的提高.对于保险业务来说,可以借助计算机技术来进行处理,能够促进我国保险业务的发展,提高工作的质量.因此,在实际工作 ...
- Excel2010中VLOOKUP函数跨工作簿使用实例:
Excel2010中VLOOKUP函数跨工作簿使用实例: 首先我们打开Excel主页面,其中有三个sheet表:我们将表三"图书编目表"中的"图书编号"导入到表 ...
- 如何修改myeclipse中web项目的工作路径或默认路径
如何修改myeclipse中web项目的工作路径或默认路径 博客分类: J2EE开发技术指南 安装好myeclipse后,第一次启动myeclipse时,都会弹出会弹出Workspace Launch ...
- Java中的Volatile如何工作? Java中的volatile关键字示例
如何在Java中使用Volatile关键字 在Java采访中,什么是volatile变量以及何时在Java中使用volatile变量是Java 采访中一个著名的多线程采访问题 . 尽管许多程序员都知道 ...
- ios开发 mvp实践_实践中开发人员的工作流程-我们如何在30天内建立MVP
ios开发 mvp实践 by Léna Faure 莱娜·福雷(LénaFaure) 实践中开发人员的工作流程-我们如何在30天内建立MVP (The developer's workflow i ...
- python 获取当前目录_如何在Python中获取当前的工作目录?
python 获取当前目录 To get the current working directory in Python, there is a library function getcwd() i ...
最新文章
- java培训:什么是抽象类?怎么定义?
- mysql 不同分区 同时insert_一文看懂mysql数据库分区表概念、类型、适用场景、优缺点及原理...
- grid - 使用相同的名称命名网格线和设置网格项目位置
- Java 之文件目录操作
- cordova插件开发
- 312.	Burst Balloons
- 我的ActiveRecord学习之路(一)
- Winsw将jar包部署为windows服务
- html分享到微博,前端实现分享内容到微博、QQ、QQ空间、豆瓣等平台
- 利用OpenCV进行颜色检测
- 【mcuclub】模数转换ADC0832
- 2021年5月23日哈工大scir笔试
- 大厂与小厂招人的区别,看完多少有点不敢相信
- 服务器添加html扩展,html5 – 服务器可扩展性 – HTML 5 websockets和彗星
- 现代函数概念的“序偶”定义
- 认识Web Workers
- “安心记加班”完成亿元级B轮融资,蚂蚁金服领投
- CH5202 自然数拆分Lunatic版(算法竞赛进阶指南,完全背包)
- 涨姿势!国外程序员搞副业的 10 大方式
- Java基础编程题(API阶段测试)(答案)
热门文章
- SpringBoot集成Cache缓存(Ehcache缓存框架,注解方式)
- c++语言中for循环语句,C++ 循环
- 12如何隐藏dock栏_ iOS 13 隐藏 Dock栏,一张神奇壁纸就可以
- nginx 调用dll_使用DLL中的资源
- 单人存档_电子发票归档怎么保存稳当?电子发票存档你都会了吗?
- OpenSIPS替代VOS3000的方案
- 张首晟教授:区块链让社会变得更加公平 与人工智能的结合令人激动 | IT领袖峰会...
- 认识:人工智能AI 机器学习 ML 深度学习DL
- MySQL 性能优化--QueryCache的原理
- shell 将两行内容合并到同一行