dポイントプレゼントキャンペーン実施中!

どうして、sqlserverには、空文字が存在するのでしょうか?
oracleには、空文字は存在せず、すべてnull値として扱ってくれて非常に、わかりやすいです。
他にも、マイクロソフトの製品(Access,やvbの変数)は、空文字を扱っていますが、空文字を扱うとは、何かメリットあるのでしょうか?
わたしは、プログラマーですが、うっとうしくてほかなりません。

A 回答 (2件)

Oracle以外の主要なRDBMSは、空文字は有効な値、nullは不定な値です。


標準SQLも、後者です。

>oracleには、空文字は存在せず、すべてnull値として扱ってくれて非常に、わかりやすいです。

これはOracle以外のRDBMS利用者には、非常に紛らわしい仕様です。

標準SQLや多くのRDBMSの常識では、nullは「列名 is null」、「列名 is not null」でしかヒットしません。ところが、Oracleの場合、「列名=''」でもヒットしてしまいます。
    • good
    • 0
この回答へのお礼

ご丁寧にありがとうございます

お礼日時:2008/08/16 22:16

たしかにプログラミングする立場からは使える値が入っていないという意味では同じなので分けている意味がわからないという感じなんでしょうね。


コンセプトの違いで優劣などはもちろんないのですが、
データ管理の視点では、NULLは「未定」、空文字は「決定(=明示的にないことを示す)」で区別して管理できるということだと思います。
結果、メンテナンス対象フィールドだと認識した場合、一律NOT NULL制約を掛けますし、必要があれば複合プライマリキーの要素としても使います。

おまけで、Oracleでは A || B はどちらかがNULL値でも値は残りますが、SQL Serverでは残らないので、それを利用してこんなこともします。
declare @t varchar(max);
select @t=isnull(@t+',','')+Field1 from TableA;
select @t;
    • good
    • 0
この回答へのお礼

ご丁寧にありがとうございます

お礼日時:2008/08/16 22:16

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す