15

我正在使用 Oracle 数据库。在数据库级别,当您将列值设置为 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 存储为非 NULL 空字符串 ('')?

4

4 回答 4

8

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

于 2010-02-02T16:43:33.897 回答
4

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

您必须在代码中处理此问题,以通过转换NULL""重新读取列的时间来防止这种行为,只是不要null在您的程序中开始使用。

于 2010-02-02T16:49:17.223 回答
4

据我所知,Oracle 不区分 '' 和 NULL,请参见此处。

于 2010-02-03T15:58:18.217 回答
1

很久没用oracle了,不过相信我们以前都是用一个空格''来表示一个空字符串,看完之后再修剪一下。

于 2010-02-02T16:47:43.267 回答