您为什么要存储一个空字符串而不是null



是否有使用空字符串而不是null的情况?我正在寻找任何要使用空字符串而不是使用null

的域或业务上下文

我正在用http堆栈来思考这个问题,例如,在php中,一个带有查询字符串的请求,看起来像https://example.com/something?keykey =将被解释为一个空字符串。

var_dump($_GET['key']);

字符串(0)"

对于每种用例,我的想象力都可以构想,这应该始终转换为null,那么为什么有人需要将""存储在数据库字段中或类似的内容?

NULL的概念用于表示未知的值。这更容易在数据库上下文中掌握,在该上下文中,一次将整个行插入数据库中。使用NULL初始化值的字段。

支持该概念的编程语言通常使用NULL作为非初始化变量的值。这种用法将NULL的一般感知转移到了" not set" 的想法。实际上,在这种情况下,NULL的语义也是"未知"

一个空字符串('')是另一回事。它表示字符串中没有任何字符。这并不意味着(类型字符串)的值不知道;已知:它是空的。使用它代替NULL是逻辑错误。

在HTTP GET的上下文中,其URL为https://example.com/something?key=,由PHP脚本处理,$_GET['key']''(空字符串)。该值已知,key变量存在于URL中,其值是空字符串。但是$_GET['foo']由PHP正确评估为NULL。该值根本不知道。它不是空字符串;它可以是任何值

当有关数据库时,一个空字符串和空值是两个不同的事情。您可以分开告诉他们并特别查询。作为一种弱打字的语言,PHP倾向于模糊行,但这并不意味着软件生态系统中的任何地方。

另一方面,PHP的主要用途之一是处理HTTP形式值,而HTTP形式值本质上都是类型字符串。也许这也无济于事。

相关内容

  • 没有找到相关文章

最新更新