findumars

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的字段,可以插入\'\'

 

http://my.oschina.net/junn/blog/161769

分类:

技术点:

相关文章:

  • 2021-12-10
  • 2021-06-08
  • 2022-12-23
  • 2022-02-26
  • 2021-09-13
  • 2022-01-14
猜你喜欢
  • 2021-08-11
  • 2022-02-10
  • 2021-12-10
  • 2022-12-23
相关资源
相似解决方案