1
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 值

4

2 回答 2

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用另一个值替换值 - 而不是相反,因此将其用于此目的是不合适的。

于 2016-05-06T18:19:22.340 回答
1

NVL函数用于替换NULL为其他值,而不是相反。

如果您实际上输入了一个空字符串,那么您的问题将无关紧要。在 Oracle 中,NULL 和空字符串之间没有区别''

但您似乎输入了包含单个空格的字符串,这与空字符串不同。

用 NULL 替换这些字符串的简单更新是:

UPDATE books SET
  author_first_name = NULL
WHERE
  author_first_name = ' '
于 2016-05-06T18:22:46.093 回答