如何使用nvl函数在oracle中用空值替换空字符串

时间:2016-05-06 18:14:57

标签: oracle nvl

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值

2 个答案:

答案 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 = ' '