其中numeric_column代指某个数字类型的值。
例:
| nvl(yanlei777,0) > 0 |
NVL(yanlei777, 0) 的意思是 如果 yanlei777 是NULL,则取 0值
null与空值的辨析
来看这样一段代码:
| 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的字段,可以插入''










