2008-09-15 25 views
14

DB2用のisnull関数と同等のパフォーマンスを備えていますか?DB2 SQLのIsNull関数?

当社の製品のいくつかは内部にあるので、彼らは名前を持っていない想像:

Select product.id, isnull(product.name, "Internal) 
From product 

が返されることがあります:

1 Socks 
2 Shoes 
3 Internal 
4 Pants 

答えて

2

私はDB2に慣れていないんだけど、あなたはCOALESCEを試してみました?

すなわち:


SELECT Product.ID, COALESCE(product.Name, "Internal") AS ProductName 
FROM Product 
0

COALESCE機能同じISNULL機能 注意。チェックする列と同じデータ型を持つ関数COALESCEを使用する必要があります。

0

COALESCEは部分的にisnullと似ていますが、試してみてください。

アプリケーションプログラムでnull処理関数を使用するのはなぜですか?より良い方法です。

+0

COALESCEは可変数のパラメータを供給することができ、最初のオプションではないデフォルト値を返します。varA、varB、VarCのいずれかがnullの場合彼らは外部結合の異なるテーブルから来ています)、すべてがnullの場合は空の文字列が必要ですd)COALESCE(varA、varB、varC、 '')を使用して、最初のものがnullでなかった場合はそれらを取得し、すべてがnullの場合は空の文字列を取得します。 IFNULL(T-SQLのISNULL)は、すべてかどうかです。 –

34

何の価値について、COALESCEは似ているが、

IFNULL(expr1, default) 

は、DB2で探している正確に一致しています。

COALESCEは最初のNON NULL式を返す複数の引数を許可しますが、IFNULLは式とデフォルトのみを許可します。

したがって

SELECT product.ID, IFNULL(product.Name, "Internal") AS ProductName 
FROM Product 

あなたが探しているだけでなく、以前の回答、単に完全性のため追加しているものを提供します。

+1

+1はIsNull文に*完全一致を与えるために+1します。私は受け入れられた答えにも投票しましたが、代わりにあなたの答えを使用しています。ありがとう! – David

+2

これは、DB2 9.7 FP9a for Windowsでは機能しません。 –

2
​​
+0

そう、はい。ただし、 'VALUE(...)'は 'COALESCE(...)'と同義です(http://publib.boulder.ibm.com/infocenter/db2luw/v9/index.jsp?topic)。 =%2Fcom.ibm.db2.udb.admin.doc%2Fdoc%2Fr0000868.htm);オプティマイザがおそらくあなたの呼び出しを交換しています。個人的には、可能であればANSI以外のセマンティクスを避けることを推奨します(つまり、代わりに 'COALESCE(...) 'を使用してください)。 –

+0

ああ!私はそれを持っています、ありがとう! – Jnn

1

DB2には、関数NVL(フィールド、値がNULLの場合)があります。

例:NAME AS

SELECT ID、NVL(NAME、「内部)、NVL(PRICE、0)URを持つ製品からの価格AS;

0

これは他の誰かがそこ

に役立つかもしれない希望
SELECT 
.... FROM XXX XX 
WHERE 
.... 
AND(
     param1 IS NULL 
     OR XX.param1 = param1 
     )