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 と空の string の間に区別はありません''

しかし、単一のスペースを含む文字列を入力したようです。これは空の文字列とは異なります。

これらの文字列を NULL に置き換える簡単な更新は次のようになります。

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