我在BBC上阅读这篇文章。它讲述了一个叫珍妮弗·诺尔(Jenifer Null)的人的故事,以及她如何在使用在线数据库(如预订机票,网上银行等)时面对日常问题。
我并不精通数据库,因此我不经常使用它。当我创建一个网站进行学习时,服务器端表单验证使用了正则表达式。据我所知,它很乐意接受“ Null”这个名字。我还没有尝试过。
有人能解释这种情况何时发生的技术细节吗?表单验证只是做某事string == NULL还是某事?即使这样我也不认为NULL is same as "NULL"。
我在BBC上阅读这篇文章。它讲述了一个叫珍妮弗·诺尔(Jenifer Null)的人的故事,以及她如何在使用在线数据库(如预订机票,网上银行等)时面对日常问题。
我并不精通数据库,因此我不经常使用它。当我创建一个网站进行学习时,服务器端表单验证使用了正则表达式。据我所知,它很乐意接受“ Null”这个名字。我还没有尝试过。
有人能解释这种情况何时发生的技术细节吗?表单验证只是做某事string == NULL还是某事?即使这样我也不认为NULL is same as "NULL"。
Answers:
您的很大一部分困惑很可能源于新闻工作者的困惑。本文讨论使用整个应用程序系统而不仅仅是数据库的问题。完全合理,因为这是针对大量消费的写作,但是技术细节被作者掩盖或误解了。
其中许多问题可能是在应用程序层而不是数据库的API引起的。魔术值是一种反模式,很难将其淘汰。某些程序员很容易按照“有人输入'null'的方式写了一个条件?它们必须表示没有值,因为那是null的意思!” 防止SQL注入的误导尝试也可能导致上述对Null的虐待,或者夏威夷姓氏包含一个单引号,这也是标准的SQL字符串定界符。
如果业务逻辑或数据库约束期望有所不同,则将这些值错误地转换为NULL或空字符串的应用程序很容易产生错误。这自然会导致本文所述的令人沮丧的用户体验。
本文本身包含一个指向Stack Overflow问题的链接,该问题演示了该问题。它是在Flex应用程序中的代码:
currentChild.appendChild("Fred");
会将包含单词的元素附加Fred到XML文档中,但代码如下:
currentChild.appendChild("null");
将附加一个空元素,而不是包含文本“ null”的元素。
XML本身对文本值“ NULL”没有问题,因此包含此类文本将没有问题。实际上,NULL在XML中根本没有特殊含义。