【SQL】表中的空字符串与NULL中的区别何在

来源:百度知道 编辑:UC知道 时间:2024/09/24 15:16:47
由于项目需要有些字段不得为空值。这些为空的字段设置了“允许为空”
现在想问有经验的朋友,如何在插入数据的时候是让字段中显示""(什么都没有)好呢?还是显示默认的<NULL>好?

我用的是SQL2000数据库,哪种用起来会比较安全,不涉及到SQL注入风险。请说一下,谢谢!

对于SQL的新手,NULL值的概念常常会造成混淆,常认为NULL是与空字符串''相同的事。情况并非如此。例如,下述语句是完全不同的:    

mysql> INSERT INTO my_table (phone) VALUES (NULL);    
mysql> INSERT INTO my_table (phone) VALUES ('');

 这两条语句均会将值插入phone(电话)列,但第1条语句插入的是NULL值,第2条语句插入的是空字符串。

第1种情况的含义可被解释为“电话号码未知”,而第2种情况的含义可被解释为“该人员没有电话,因此没有电话号码”。  


  为了进行NULL处理,可使用IS NULL和IS NOT NULL操作符以及IFNULL()函数。    在SQL中,NULL值与任何其它值的比较(即使是NULL)永远不会为“真”。

包含NULL的表达式总是会导出NULL值,除非在关于操作符的文档中以及表达式的函数中作了其他规定。

下述示例中的所有列均返回NULL:   

 mysql> SELECT NULL, 1+NULL, CONCAT('Invisible',NULL);

 如果打算搜索列值为NULL的列,不能使用expr = NULL测试。

下述语句不返回任何行,这是因为,对于任何表达式,expr = NULL永远不为“真”:  

 mysql> SELECT * FROM my_table WHER