15

Oracle DB を使用しています。データベース レベルでは、列の値を NULL または '' (空の文字列) に設定すると、フェッチされた値はどちらの場合も NULL になります。'' (空の文字列) を非 NULL 値としてデータベースに格納することはできますか?

私はこれを実行します

UPDATE contacts SET last_name = '' WHERE id = '1001';

commit;

SELECT last_name, ID FROM contacts WHERE id ='1001';

LAST_NAME                  ID
------------               ------
null                       1001

last_name を NULL 以外の空の文字列 ('') として保存することは可能ですか?

4

4 に答える 4

8

オラクルでこれを行う唯一の方法は、何らかの補助フラグフィールドを使用することです。これは、設定時に値が空の文字列である必要があるという事実を表すと想定されています。

于 2010-02-02T16:43:33.897 に答える
4

私の知る限り、Oracle は '' と NULL を区別しません。こちらを参照してください。

于 2010-02-03T15:58:18.217 に答える
4

Oracle には、 INSERT および UPDATE ステートメントでサイレントに変換""される既知の動作があります。NULL

列を読み込んで最初からプログラムで使用しない場合に変換NULLすることで、この動作を防ぐためにコードでこれに対処する必要があります。""null

于 2010-02-02T16:49:17.223 に答える
1

Oracle を使用してから長い時間が経ちましたが、以前は単一のスペース ' ' を使用して空の文字列を表し、読み取り後にそれをトリミングしていたと思います。

于 2010-02-02T16:47:43.267 に答える