是否可以将''(空字符串)存储为数据库中的非NULL值?

时间:2010-02-02 16:33:31

标签: sql oracle oracle11g

我正在使用Oracle DB。在数据库级别,当您将列值设置为NULL或''(空字符串)时,两种情况下获取的值都为NULL。是否可以将''(空字符串)存储为数据库中的非NULL值?

我执行此

UPDATE contacts SET last_name = '' WHERE id = '1001';

commit;

SELECT last_name, ID FROM contacts WHERE id ='1001';

LAST_NAME                  ID
------------               ------
null                       1001

是否可以将last_name存储为非空的空字符串('')?

4 个答案:

答案 0 :(得分:8)

在oracle中执行此操作的唯一方法是使用某种辅助标志字段,在设置时应该表示该值应为空字符串。

答案 1 :(得分:4)

Oracle有一个众所周知的行为,它在INSERT和UPDATE语句中默默地将""转换为NULL

您必须在代码中处理此问题,以便在重新读取列时将NULL转换为"",并且不要在程序中使用null来防止此行为从...开始。

答案 2 :(得分:4)

据我所知,Oracle不区分''和NULL,请参阅here.

答案 3 :(得分:1)

自从我使用Oracle以来很长一段时间,但我相信我们曾经使用单个空格''来表示空字符串,然后在阅读后修剪它。