Mysql学习MySQL中对于NULL值的理解和使用教程
《Mysql学习MySQL中对于NULL值的理解和使用教程》要点: MYSQL必读NULL值的概念是造成SQL的新手的混淆的普遍原因,他们经常认为NULL是和一个空字符串''的一样的东西.不是这样的!例如,下列语句是完全不同的: MYSQL必读
mysql> INSERT INTO my_table (phone) VALUES (NULL);
mysql> INSERT INTO my_table (phone) VALUES ("");
MYSQL必读两个语句把值插入到phone列,但是第一个插入一个NULL值而第二个插入一个空字符串.第一个的含义可以认为是“电话号码不知道”,而第二个则可意味着“她没有电话”. MYSQL必读在SQL中,NULL值在于任何其他值甚至NULL值比较时总是假的(FALSE).包含NULL的一个表达式总是产生一个NULL值,除非在包含在表达式中的运算符和函数的文档中指出.在下列例子,所有的列返回NULL: MYSQL必读
mysql> SELECT NULL,1+NULL,CONCAT('Invisible',NULL);
MYSQL必读如果你想要寻找值是NULL的列,你不能使用=NULL测试.下列语句不返回任何行,因为对任何表达式,expr = NULL是假的: MYSQL必读
mysql> SELECT * FROM my_table WHERE phone = NULL;
MYSQL必读要想寻找NULL值,你必须使用IS NULL测试.下例显示如何找出NULL电话号码和空的电话号码: MYSQL必读
mysql> SELECT * FROM my_table WHERE phone IS NULL;
mysql> SELECT * FROM my_table WHERE phone = "";
MYSQL必读在MySQL中,就像很多其他的SQL服务器一样,你不能索引可以有NULL值的列.你必须声明这样的列为NOT NULL,而且,你不能插入NULL到索引的列中. MYSQL必读当用LOAD DATA INFILE读取数据时,空列用''更新.如果你想要在一个列中有NULL值,你应该在文本文件中使用N.字面上的词'NULL'也可以在某些情形下使用. MYSQL必读当使用ORDER BY时,首先呈现NULL值.如果你用DESC以降序排序,NULL值最后显示.当使用GROUP BY时,所有的NULL值被认为是相等的. MYSQL必读为了有助于NULL的处理,你能使用IS NULL和IS NOT NULL运算符和IFNULL()函数. MYSQL必读MySQL的 IFNULL() 函数和Oracle的 NVL() 函数功能类似.以下简单举例: MYSQL必读
mysql> select IFNULL(1,0);
-> 1
mysql> select IFNULL(0,10);
-> 0
mysql> select IFNULL(1/0,10);
-> 10
mysql> select IFNULL(1/0,'yes');
-> 'yes'
NVL( string1,replace_with)
MYSQL必读功能:如果string1为NULL,则NVL函数返回replace_with的值,否则返回string1的值. MYSQL必读
NVL(TO_CHAR(numeric_column),'some string')
MYSQL必读其中numeric_column代指某个数字类型的值. MYSQL必读
nvl(yanlei777,0) > 0
MYSQL必读NVL(yanlei777,0) 的意思是 如果 yanlei777 是NULL,则取 0值 MYSQL必读null与空值的辨析 MYSQL必读
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 ;
MYSQL必读错误(不可以插入null值): MYSQL必读
INSERT INTO `test` VALUES (null,1);
MYSQL必读正确(插入''没问题): MYSQL必读
INSERT INTO `test` VALUES ('',1);
INSERT INTO `test` VALUES ('',NULL);
INSERT INTO `test` VALUES ('1','2');
MYSQL必读检索(''不是null,所以not null会把''都算进去): MYSQL必读
SELECT * FROM `test` WHERE col1 IS NOT NULL
MYSQL必读结果:所有三条数据 MYSQL必读检索(正常检索): MYSQL必读
SELECT * FROM `test` WHERE col1 <> ''
MYSQL必读结果:最后一条数据 MYSQL必读检索(<>'',会同时排除''和null的数据,只检索有内容的数据): MYSQL必读
SELECT * FROM `test` WHERE col2<>''
MYSQL必读总结: (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |