我知道它确实考虑过'' NULL,但这并没有太多告诉我为什么会这样.据我所知,SQL规范''与NULL- 不一样- 一个是有效数据,另一个是缺少相同的信息.
随意推测,但请说明是否是这种情况.如果甲骨文的任何人都能评论它,那就太棒了!
显然oracle似乎没有区分空字符串和空值.例如
Select name from TABLE_A where id=100;
ID NAME
100 null
Update TABLE_A set NAME='' where id=100;
SELECT -->
ID NAME
100 null
SELECT length(NAME) FROM TABLE_A WHERE id=100;
null
Run Code Online (Sandbox Code Playgroud)
我想不出有什么理由可以建立Oracle以这种方式运行(它是否也在sqlplus中执行此操作? - 我通过java接口访问,引用的文章使用了php客户端).
难道你至少不想区分0长度和未定义长度吗?这是一个已知的问题?某些特定目的的故意行为?数据库理论中长期存在的争议?是什么赋予了?
(这是Matt Solnit对这个问题的回答.)