INSERT INTO books(book_id, title, author_last_name, author_first_name, classify)
VALUES (1000, 'The Picture of Dorian Gray', 'Wilde', 'Oscar', 'fiction');
INSERT INTO books(book_id, title, author_last_name, author_first_name, classify)
VALUES (1001, 'Think Big', 'Carson', 'Dr. Ben', 'non - fiction');
INSERT INTO books(book_id, title, author_last_name, author_first_name, classify)
VALUES (1003, 'Mathematical Scandals', 'Pappas', ' ', 'non - fiction');
INSERT INTO books(book_id, title, author_last_name, author_first_name, classify)
VALUES (1004, 'SQL', 'Harris', 'Andy', 'non - fiction');
INSERT INTO books(book_id, title, author_last_name, author_first_name, classify)
VALUES (1010, 'Excel 2016', 'Chan', ' ', 'non - fiction');
commit;
这是我的表的价值。在一些记录中,我插入了空字符串''。 如何使用nvl函数
将空字符串替换为NULL值答案 0 :(得分:1)
这将用NULL
值替换单个空白字符串:
UPDATE books
SET author_first_name = NULL
WHERE author_first_name = ' ';
或者,这将从名称的开头和结尾修剪所有空格(如果剩下一个空字符串则与NULL
值相同)
UPDATE books
SET author_first_name = TRIM( author_first_name );
NVL
函数用于有条件地将NULL
值替换为另一个值 - 而不是相反,因此将其用于此目的是不合适的。
答案 1 :(得分:1)
NVL
函数用于将NULL
替换为其他值,而不是相反。
如果您确实输入了空字符串,那么您的问题将无关紧要。在Oracle中,NULL和空字符串''
之间没有区别。
但是看起来你已经输入了包含单个空格的字符串,这与空字符串不同。
用NULL替换这些字符串的简单更新是:
UPDATE books SET
author_first_name = NULL
WHERE
author_first_name = ' '