3 回答
TA贡献1719条经验 获得超6个赞
通过使用,NULL您可以区分“不输入数据”和“不输入数据”。
更多区别:
一个LENGTH的NULL就是NULL,一个LENGTH空字符串的是0。
NULLs在空字符串之前排序。
COUNT(message)将计算空字符串,但不计算NULLs
您可以使用绑定变量搜索空字符串,但不能搜索NULL。该查询:
SELECT *
FROM mytable
WHERE mytext = ?
无论您从客户端传递的值如何,都永远不会匹配NULLin mytext。要匹配NULLs,您必须使用其他查询:
SELECT *
FROM mytable
WHERE mytext IS NULL
TA贡献1891条经验 获得超3个赞
如果您计划切换数据库,则要考虑的一件事是Oracle不支持空字符串。它们会自动转换为NULL,您无法使用诸如这样的子句查询它们WHERE somefield = ''。
TA贡献1856条经验 获得超5个赞
要记住的一件事是,NULL可能会使您的代码路径困难得多。例如,在Python中,大多数数据库适配器/ ORM都映射NULL到None。
这样的事情:
print "Hello, %(title)s %(firstname) %(lastname)!" % databaserow
可能会导致“您好,没有Joe Doe!” 为了避免这种情况,您需要类似以下代码的内容:
if databaserow.title:
print "Hello, %(title)s %(firstname) %(lastname)!" % databaserow
else:
print "Hello, %(firstname) %(lastname)!" % databaserow
这会使事情变得更加复杂。
添加回答
举报