【发布时间】:2020-02-09 03:10:05
【问题描述】:
当我尝试从我创建的表中选择 * 时,我在其中插入了一个空值。包含空值的整行数据将被省略;
CREATE TABLE Credit_transactions (
CT_id INT PRIMARY KEY,
Date_time DATE,
Money INT ,
Credits INT ,
CT_type INT ,
Customer_id INT );
例如,如果一笔交易不包含任何钱,我将在插入数据时插入一个空值,例如;
INSERT INTO Credit_transactions(CT_id, Date_time, Money, Credits, CT_type, Customer_id)
VALUES('2', '10-DEC-2018', 'NULL', '3', '1', '1');
然而,在插入所有数据并尝试select * from the table 后,我只得到没有空值的行,例如我键入的 id 1,2 和 3 id2 在其中一列中包含空值,我只会得到 id1和全选后的id3。
我该如何解决这个问题,我想将值显示为空值,例如;
id:1 money:10
id:2 money:NULL
id:3 money 20
第一次使用堆栈溢出,对于这样的初学者问题感到抱歉。
【问题讨论】:
-
包含'NULL'的值可能插入失败并且在表中不存在。而不是插入 NULL,而是在仅接受整数的字段中插入字符串“NULL”。所以很可能会失败。
-
除了已经指出的错误使用字符串“NULL”(单引号)与 NULL 指示符(不带引号的 NULL 词),您使用根据 NLS_DATE_FORMAT 的系统/会话设置,插入 DATE 列的字符串可能会出现问题。仅显示日期的字符串表示形式绝不是一个好主意,并期望 Oracle 在将其转换为内部 DATE 时神奇地知道如何解释该格式。始终使用 to_date() 函数,以便您始终完全控制。
-
“NULL”的错误使用会产生一个错误,这应该是一个非常有力的线索。至少您应该将其包含在问题描述中。
-
另外,您将
'10-DEC-2018'插入date列。在 Oracle 中,语法是 like this。 -
不显示“表格”,或不显示行?我很想编辑您的帖子以更正标题,但我不确定您的意思是否可能与“不显示行”不同。请澄清。