MySQL里null与空值的辨析
2013-09-19 02:39
204 查看
CREATE TABLE `test` (
`col1` VARCHAR( 10 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL ,
`col2` VARCHAR( 10 ) CHARACTER SET utf8 COLLATE utf8_general_ci NULL
) ENGINE = MYISAM ;
错误(不可以插入null值):
INSERT INTO `test` VALUES (null,1);
正确(插入''没问题):
INSERT INTO `test` VALUES ('',1);
INSERT INTO `test` VALUES ('', NULL);
INSERT INTO `test` VALUES ('1', '2');
检索(''不是null,所以not null会把''都算进去):
SELECT * FROM `test` WHERE col1 IS NOT NULL
结果:所有三条数据
检索(正常检索):
SELECT * FROM `test` WHERE col1 <> ''
结果:最后一条数据
检索(<>'',会同时排除''和null的数据,只检索有内容的数据):
SELECT * FROM `test` WHERE col2<>''
总结:
1. null的存储不是'',是其它特殊的字符表示。
2. null在检索<>''的时候,也会被排除,因为没有真正有意义的内容
3. not null严格按照字面意思,''不会被排除。
4. 定义not null的字段,可以插入''
/article/3461151.html
`col1` VARCHAR( 10 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL ,
`col2` VARCHAR( 10 ) CHARACTER SET utf8 COLLATE utf8_general_ci NULL
) ENGINE = MYISAM ;
错误(不可以插入null值):
INSERT INTO `test` VALUES (null,1);
正确(插入''没问题):
INSERT INTO `test` VALUES ('',1);
INSERT INTO `test` VALUES ('', NULL);
INSERT INTO `test` VALUES ('1', '2');
检索(''不是null,所以not null会把''都算进去):
SELECT * FROM `test` WHERE col1 IS NOT NULL
结果:所有三条数据
检索(正常检索):
SELECT * FROM `test` WHERE col1 <> ''
结果:最后一条数据
检索(<>'',会同时排除''和null的数据,只检索有内容的数据):
SELECT * FROM `test` WHERE col2<>''
总结:
1. null的存储不是'',是其它特殊的字符表示。
2. null在检索<>''的时候,也会被排除,因为没有真正有意义的内容
3. not null严格按照字面意思,''不会被排除。
4. 定义not null的字段,可以插入''
/article/3461151.html
相关文章推荐
- MySQL里null与空值的辨析
- MySQL 中NULL和空值的区别
- MySQL 中NULL和空值的区别
- mysql排序让空值NULL排在数字后边
- MYSQL、SQL Server、Oracle数据库排序空值null问题及其解决办法
- mysql的NULL和空值
- .NET和SQL Server中“空值”辨析 (DBNull与Null的区别)
- mysql排序让空值NULL排在数字后边
- MySQL 中NULL和空值的区别
- mysql中的NULL记录和空值有什么区别
- MYSQL、SQL Server、Oracle数据库排序空值null问题及其解决办法
- MYSQL、SQL Server、Oracle数据库排序空值null问题及其解决办法
- MySQL官方文档中NULL和空值的区别
- .NET和SQL Server中“空值”辨析 (DBNull与Null的区别) [转]
- 关于空值null的排序问题 mysql 和oracle
- MySQL中NULL和空值的区别
- .NET和SQL Server中“空值”辨析 (DBNull与Null的区别) [转]
- .NET和SQL Server中“空值”辨析 (DBNull与Null的区别) [转]
- mysql排序让空值NULL排在数字后边
- .NET和SQL Server中“空值”辨析 (DBNull与Null的区别)