DB2用のisnull関数と同等のパフォーマンスを備えていますか?DB2 SQLのIsNull関数?
当社の製品のいくつかは内部にあるので、彼らは名前を持っていない想像:
Select product.id, isnull(product.name, "Internal)
From product
が返されることがあります:
1 Socks
2 Shoes
3 Internal
4 Pants
DB2用のisnull関数と同等のパフォーマンスを備えていますか?DB2 SQLのIsNull関数?
当社の製品のいくつかは内部にあるので、彼らは名前を持っていない想像:
Select product.id, isnull(product.name, "Internal)
From product
が返されることがあります:
1 Socks
2 Shoes
3 Internal
4 Pants
私はDB2に慣れていないんだけど、あなたはCOALESCEを試してみました?
すなわち:
SELECT Product.ID, COALESCE(product.Name, "Internal") AS ProductName
FROM Product
COALESCE
機能同じISNULL
機能 注意。チェックする列と同じデータ型を持つ関数COALESCE
を使用する必要があります。
COALESCE
は部分的にisnull
と似ていますが、試してみてください。
アプリケーションプログラムでnull処理関数を使用するのはなぜですか?より良い方法です。
何の価値について、COALESCEは似ているが、
IFNULL(expr1, default)
は、DB2で探している正確に一致しています。
COALESCEは最初のNON NULL式を返す複数の引数を許可しますが、IFNULLは式とデフォルトのみを許可します。
したがって
SELECT product.ID, IFNULL(product.Name, "Internal") AS ProductName
FROM Product
あなたが探しているだけでなく、以前の回答、単に完全性のため追加しているものを提供します。
+1はIsNull文に*完全一致を与えるために+1します。私は受け入れられた答えにも投票しましたが、代わりにあなたの答えを使用しています。ありがとう! – David
これは、DB2 9.7 FP9a for Windowsでは機能しません。 –
そう、はい。ただし、 'VALUE(...)'は 'COALESCE(...)'と同義です(http://publib.boulder.ibm.com/infocenter/db2luw/v9/index.jsp?topic)。 =%2Fcom.ibm.db2.udb.admin.doc%2Fdoc%2Fr0000868.htm);オプティマイザがおそらくあなたの呼び出しを交換しています。個人的には、可能であればANSI以外のセマンティクスを避けることを推奨します(つまり、代わりに 'COALESCE(...) 'を使用してください)。 –
ああ!私はそれを持っています、ありがとう! – Jnn
DB2には、関数NVL(フィールド、値がNULLの場合)があります。
例:NAME AS
SELECT ID、NVL(NAME、「内部)、NVL(PRICE、0)URを持つ製品からの価格AS;
これは他の誰かがそこ
に役立つかもしれない希望SELECT
.... FROM XXX XX
WHERE
....
AND(
param1 IS NULL
OR XX.param1 = param1
)
COALESCEは可変数のパラメータを供給することができ、最初のオプションではないデフォルト値を返します。varA、varB、VarCのいずれかがnullの場合彼らは外部結合の異なるテーブルから来ています)、すべてがnullの場合は空の文字列が必要ですd)COALESCE(varA、varB、varC、 '')を使用して、最初のものがnullでなかった場合はそれらを取得し、すべてがnullの場合は空の文字列を取得します。 IFNULL(T-SQLのISNULL)は、すべてかどうかです。 –