我正在使用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存储为非空的空字符串('')?
答案 0 :(得分:8)
在oracle中执行此操作的唯一方法是使用某种辅助标志字段,在设置时应该表示该值应为空字符串。
答案 1 :(得分:4)
Oracle有一个众所周知的行为,它在INSERT和UPDATE语句中默默地将""
转换为NULL
。
您必须在代码中处理此问题,以便在重新读取列时将NULL
转换为""
,并且不要在程序中使用null
来防止此行为从...开始。
答案 2 :(得分:4)
据我所知,Oracle不区分''和NULL,请参阅here.
答案 3 :(得分:1)
自从我使用Oracle以来很长一段时间,但我相信我们曾经使用单个空格''来表示空字符串,然后在阅读后修剪它。