まず最初に、CAST
がNULL
フィールドでどのように機能し、値がNULL
である場合にどのように動作するかを知りたいです。
式の例:
(CAST(INT_FIELD as nvarchar(100))
値INT_FIELD
がNULL
の場合はどうなりますか?
その理由は、私が次のことをしようとしているからです。
SELECT (CAST(INT_FIELD as nvarchar(100)) + ' ' + SOME_OTHER_FIELD FROM SOME_TABLE;
SOME_OTHER_FIELD
がnullでなくても、NULL
を取得しています。 NULL + something = NULL
という何らかのロジックがあると思いますが、よくわかりません。
この動作を制御するにはどうすればよいですか?
[〜#〜] isnull [〜#〜] または [〜#〜] coalesce [ 〜#〜] 、NULL
の間のほとんどの行操作はNULL
になります。 [〜#〜] cast [〜#〜]NULL
の戻り値はNULL
とNULL
+何かがNULL
でもあります。あなたの例では、このようなことをする必要があります:
SELECT ISNULL(CAST(INT_FIELD as nvarchar(100)),'') + ' ' + ISNULL(SOME_OTHER_FIELD,'')
FROM SOME_TABLE;
もちろん、私の例では、両方のフィールドがNULL
の場合、 ''の代わりに ''を返しますが、アイデアは得られます。
COALESCEを見てください。ここでは、最初の非NULLを見つけ、すべてがNULLの場合は0を返します。例:
SELECT (CAST(COALESCE(INT_FIELD,0) as nvarchar(100)) + ' ' + SOME_OTHER_FIELD FROM SOME_TABLE;
COALESCE
を使用してみてください
SELECT COALESCE(CAST(INT_FIELD as nvarchar(100), '') + ' ' + SOME_OTHER_FIELD FROM SOME_TABLE;
通常、NULL
+(-、/、*など)something
= NULL
。使用できます
SELECT ISNULL(CAST(INT_FIELD as nvarchar(100)),'')
+ ' ' + ISNULL(SOME_OTHER_FIELD FROM SOME_TABLE,'')
または、SET CONCAT_NULL_YIELDS_NULL OFF
( 詳細 )