2

以下の例では、「NAME1」以外のすべてが oracle 11g の結果として null を与える理由です。

スペースを明示的に言及すると、スペースが必要になります。それ以外の場合は、空の文字列ではなく null のみになります。これを明確にするのを手伝ってください。

NAME2 で空のスペースを指定しましたが、それでも null が返されます。

select 
NVL(NAME,' ') AS NAME1,
NVL(NAME,'') AS NAME2,
NVL(NAME,NULL) AS NAME3,
NAME AS NAME4 
from employee

出力:

(スペース),null,null,null

4

3 に答える 3

8

Oracle では、長さが 0 の varchar は NULL として扱われるためです。

あなたの例では

NVL(NAME, ' ') AS NAME1 will evaluate to either NAME or ' ' - empty string.
NVL(NAME, '') as NAME2 will evaluate to either NAME or a zero length string
于 2013-03-12T09:44:45.240 に答える
3

'' はオラクルでは null と等しいためです。たとえば、次の 2 つのクエリは同じです。

update  test set name=''  where id = 15
update  test set name=null   where id = 15
于 2013-03-12T10:59:30.470 に答える
1

その理由は、Oracle では空の文字列がNULL.

次のクエリを実行すると、これが当てはまることがわかります

SELECT 'x' FROM DUAL WHERE '' IS NULL

'' IS NULLこれは、条件がであることを意味する単一の行を返す必要がありtrueます。

于 2013-03-12T09:43:40.093 に答える