SQL反模式学习笔记14 关于Null值的使用
目标:辨别并使用Null值
反模式:将Null值作为普通的值,反之亦然
1、在表达式中使用Null:
Null值与空字符串是不一样的,Null值参与任何的加、减、乘、除等其他运算,结果都是Null;
Null值与False也不同。And、Or和Not三个bool操作如果设计Null,结果很迷惑。
2、搜索运行为空的列:任何与Null的比较逗返回“未知”,既不是True,也不是False。
在Where表达式中只能使用 Is Null 或者 Is Not Null,其他操作都查询不到结果。
3、不能使用Null作为参数传入查询表达式中。
要避免上述问题,可以使用约束,设置列禁止Null。存储值必须是有意义的内容。
如何识别反模式:当出现以下情况时,可能是反模式
1、我如何将没有值(Null)的列取出来?
2、将字符串与Null进行拼接操作,结果返回Null
合理使用反模式:
使用Null并不是反模式,反模式是将Null作为一个普通值处理或者使用一个普通的值来取代Null的作用。
有一种情况可以讲Null视为普通值,就是导入或者导出数据的时候。
解决方案:将Null值视为特殊值
1、在标量表达式中使用null
进行=、<>、+、||操作时,只要有一个null值,结果就为null。
2、在布尔表达式中使用null
布尔表达式中,只有:null and false结果为false,null or true结果为true,其它情况结果都是null。
3、检索null值
使用 is null、is not null
4、声明not null列
有时候可以通过使用default值来避免null,但有时候却不可以这么做。
5、使用动态默认值
SqlServer中的Coalesec()与isnull()函数
SQL反模式,系列学习汇总
18、SQL反模式学习笔记18 减少SQL查询数据,避免使用一条SQL语句解决复杂问题
成在管理,败在经验;嬴在选择,输在不学! 贵在坚持!
个人作品
BIMFace.SDK.NET
开源地址:https://gitee.com/NAlps/BIMFace.SDK
系列博客:https://www.cnblogs.com/SavionZhang/p/11424431.html
系列视频:https://www.cnblogs.com/SavionZhang/p/14258393.html
技术栈
1、Visual Studio、.NET Core/.NET、MVC、Web API、RESTful API、gRPC、SignalR、Java、Python
2、jQuery、Vue.js、Bootstrap、ElementUI
3、数据库:分库分表、读写分离、SQLServer、MySQL、PostgreSQL、Redis、MongoDB、ElasticSearch、达梦DM
4、架构:DDD、ABP、SpringBoot、jFinal
5、环境:跨平台、Windows、Linux、Nginx
6、移动App:Android、IOS、HarmonyOS、微信小程序、钉钉、uni-app、MAUI
分布式、高并发、云原生、微服务、Docker、CI/CD、DevOps、K8S;Dapr、RabbitMQ、Kafka、RPC、Elasticsearch。
欢迎关注作者头条号 张传宁IT讲堂,获取更多IT文章、视频等优质内容。
出处:www.cnblogs.com/SavionZhang
作者:张传宁 技术顾问、培训讲师、微软MCP、系统架构设计师、系统集成项目管理工程师、科技部创新工程师。
专注于企业级通用开发平台、工作流引擎、自动化项目(代码)生成器、SOA 、DDD、 云原生(Docker、微服务、DevOps、CI/CD);PDF、CAD、BIM 审图等研究与应用。
多次参与电子政务、图书教育、生产制造等企业级大型项目研发与管理工作。
熟悉中小企业软件开发过程:可行调研、需求分析、架构设计、编码测试、实施部署、项目管理。通过技术与管理帮助中小企业实现互联网转型升级全流程解决方案。
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
如有问题,可以通过邮件905442693@qq.com联系。共同交流、互相学习。
如果您觉得文章对您有帮助,请点击文章右下角【推荐】。您的鼓励是作者持续创作的最大动力!