Django与SQL语言中——NULL与空字符串的区别
SQL有指定空值的独特方式,它把空值叫做NULL。
在SQL中, NULL的值不同于空字符串,就像Python中None不同于空字符串("")一样。这意味着某个字符型字段(如VARCHAR)的值不可能同时包含NULL和空字符串。
这会引起不必要的歧义或疑惑。 为什么这条记录有个NULL,而那条记录却有个空字符串? 它们之间有区别,还是数据输入不一致? 还有: 我怎样才能得到全部拥有空值的记录,应该按NULL和空字符串查找么?还是仅按字符串查找?
为了消除歧义,Django生成CREATE TABLE语句自动为每个字段显式加上NOT NULL。 这里有个第五章中生成Author模块的例子:
CREATE TABLE "books_author" ("id" serial NOT NULL PRIMARY KEY,"first_name" varchar(30) NOT NULL,"last_name" varchar(40) NOT NULL,"email" varchar(75) NOT NULL )
在大多数情况下,这种默认的行为对你的应用程序来说是最佳的,因为它可以使你不再因数据一致性而头痛。 而且它可以和Django的其它部分工作得很好。如在管理工具中,如果你留空一个字符型字段,它会为此插入一个空字符串(而* 不是*NULL)。
但是,其它数据类型有例外:日期型、时间型和数字型字段不接受空字符串。 如果你尝试将一个空字符串插入日期型或整数型字段,你可能会得到数据库返回的错误,这取决于那个数据库的类型。 (PostgreSQL比较严禁,会抛出一个异常;MySQL可能会也可能不会接受,这取决于你使用的版本和运气了。)在这种情况下,NULL是唯一指定空值的方法。 在Django模块中,你可以通过添加null=True来指定一个字段允许为NULL。
因此,这说起来有点复杂: 如果你想允许一个日期型(DateField、TimeField、DateTimeField)或数字型(IntegerField、DecimalField、FloatField)字段为空,你需要使用null=True * 和* blank=True。
转载于:https://www.cnblogs.com/Simon-xm/p/3896542.html
Django与SQL语言中——NULL与空字符串的区别相关推荐
- Oracle中Null与空字符串''的区别
http://read.newbooks.com.cn/info/172049.html Oracle中Null与空字符串''的区别 来源:CSDN 作者:jsjzzh 发布时间:2007-1 ...
- Oracle中Null与空字符串' '的区别
含义解释: 问:什么是NULL? 答:在我们不知道具体有什么数据的时候,也即未知,可以用NULL,我们称它为空,ORACLE中,含有空值的表列长度为零. ORACLE允许任何一种数据类型的字段为空,除 ...
- mysql的字段空格是null_MySQL中NULL与空字符串 空格问题
一些刚刚接触MySQL的孩子,经常会错误的认为NULL与空字符串' '是相同的.这看似是一件不重要的事情,但是在MySQL中,这两者是完全不同的.NULL是指没有值,而''则表示值是存在的,只不过是个 ...
- mysql null值和空格_MySQL中NULL与空字符串空格问题
一些刚刚接触MySQL的孩子,经常会错误的认为NULL与空字符串' '是相同的.这看似是一件不重要的事情,但是在MySQL中,这两者是完全不同的.NULL是指没有值,而''则表示值是存在的,只不过是个 ...
- null和空字符串('')的区别
在Java开发中,我们需要常常判断是否值为null,尤其在xml数据交互过程中,我们判断某一个报文的值是否为null时候,经常需要用三目运算判断:如果值为null,则赋值空字符串(insert数据库时 ...
- oracle数据库null和空字符串区别,null和空字符串('')的区别
在Java开发中,我们需要常常判断是否值为null,尤其在xml数据交互过程中,我们判断某一个报文的值是否为null时候,经常需要用三目运算判断:如果值为null,则赋值空字符串(insert数据库时 ...
- Sqoop导入hive中null是空字符串还是‘null‘的问题(关注)
Sqoop导入hive中null字符串处理为NULL 其中注意 这个是转为空字符串而不是'null'这种. 可以用ifnull转化的 这种就是'null'
- Mysql 中null与空字符串陷进
前阵子在更新数据库时候碰见一个新增表的语句,发现插入的空值自动填充的值,很是费解,下面我们先来说说案例,以下是模仿的测试: 首先创建一个表:create table ceshi(ID INT ,cre ...
- Java关于null和空字符串““的区别
我们都知道当我们new一个String类型的变量是时,用的是 String str = null:而不是Sting str ="": null不会分配内存空间,相当于什么都没有. ...
最新文章
- Git探秘:实用主义(1/2)
- SQL2005中row_number()等函数的用法
- P1547 Out of Hay
- 数据库中char, varchar, nvarchar的差异
- java NIO网络编程之SelectionKey
- knx智能照明控制系统电路图_智能照明控制系统应用效果
- StorAge存储库
- ios 音频录音、上传至7牛、播放及其与android兼容的问题
- Error in cool_function[1] : object of type ‘closure‘ is not subsettable
- LeetCode 题解之 231. Power of Two
- PHP 互联网架构师成长之路*「swoole」终极指南
- java抽象类的属性_JAVA 抽象类
- 来了,2020全球算力大会暨新基建矿业峰会,首批重磅嘉宾阵容出炉!
- 开发基于 Google Map 的 Android 应用
- 谷歌为iPhone推新版本语音电话软件 北京网游分级制度今年启动(每日关注2010.1.27)
- PowerShell 7.1 中的新增功能
- EventLoop(回顾)
- Bundler的安装和配置
- 使用Python脚本处理Excel文档
- Arduino——超声波测距
热门文章
- 距离高考出成绩,一年了、、、
- 华为虚拟服务器lanip地址,2018软考网络工程师《华为基础实验》十九配置路由器为DHCPServer...
- c++经典编程题_【经典C语言知识】C/C++编程难点总结
- aosp 本地版本管理_谈 DevOps 平台实施:我在本地跑明明成功的,为什么在你平台跑就报错?...
- mysql外键教程_关于MySQL外键的简单学习教程
- sam格式的结构和意义_各种格式的练字本,对写字真有帮助吗
- 求数字序列中的第n位对应的数字
- Git(10)-merge
- 含有js的英文单词_JavaScript 常用单词整理
- 10kv线路负载率计算_电工必懂计算公式,你若不会,如何立足于电力行业?