首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Oracle中使用空值有什么好处?

在Oracle中使用空值有什么好处?
EN

Stack Overflow用户
提问于 2016-05-12 01:41:57
回答 1查看 134关注 0票数 0

我想了解Oracle是如何处理空值的。这实际上更多的是要求确认我已经发现的东西,以确保我没有忽略一些显而易见的东西。以下是用于确认Oracle处理空值与处理空字符串的方式相同的脚本。如果是这样的话,请告诉我为什么要开发任何Oracle数据库来允许字段为空,而不是在对索引进行查询时引入模糊处理(即...WHERE NVL(FieldName,‘默认值’) !=‘测试’)?

代码语言:javascript
复制
-- Returns only 2 rows
-- Oracle doesn't differentiate from blank strings and NULL values
SELECT NULL AS Test_Nulls from dual
UNION
SELECT '' AS Test_Nulls from dual
UNION
SELECT 'Test' AS Test_Nulls from dual;

-- Returns "X"
-- Further proof Oracle doesn't differentiate from blank strings and NULL values
SELECT 'X' AS Test_Nulls
FROM dual
WHERE '' is NULL;

-- Returns "X"
-- Even further proof Oracle doesn't differentiate from blank strings and NULL values
SELECT NVL('','X') AS Test_Nulls
FROM dual;

-- Returns 3 rows
-- Oracle recognizes <Carriage Return> + <Line Feed>
SELECT '' AS Returned from dual
UNION
SELECT '
' AS Returned FROM dual
UNION
SELECT 'Test' AS Returned FROM dual;
EN

回答 1

Stack Overflow用户

发布于 2016-05-19 21:27:37

答案很简单:对于我在Oracle中所做的任何新的数据库设计工作,我都会将我的所有varchar2和nvarchar2以及char2和nchar2字段设置为不允许NULL,并具有空字符串的默认值。我一直怀疑添加"2“后缀的命名约定,以及它不是其他数据库平台的常见字段类型的事实。对我来说,这似乎是一种最后时刻的绝望,意味着Oracle在早期处理了一种情况,比如,“哦,好吧,……我们不能纠正它,所以我们就给它起一个新的名字!”这就是我对这件事的看法。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37169815

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档