【SQL】表中的空字符串与NULL中的区别何在
来源:百度知道 编辑:UC知道 时间:2024/09/24 15:16:47
由于项目需要有些字段不得为空值。这些为空的字段设置了“允许为空”
现在想问有经验的朋友,如何在插入数据的时候是让字段中显示""(什么都没有)好呢?还是显示默认的<NULL>好?
我用的是SQL2000数据库,哪种用起来会比较安全,不涉及到SQL注入风险。请说一下,谢谢!
现在想问有经验的朋友,如何在插入数据的时候是让字段中显示""(什么都没有)好呢?还是显示默认的<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