次のコードは、DOBフィールドがnullの場合に1900-01-01を返します。私はそれが空の文字列( '')を返すことを望みました(そして期待していました)が、そうではありません。どうすれば希望の結果を得ることができますか?
isnull(convert(date,DOB,1),'')
DATE
からISNULL
値タイプを返すため、空の文字列を取得できません。
あたり [〜#〜] msdn [〜#〜] 、ISNULL
check_expressionと同じ型を返します。check_expressionとしてリテラルNULLが指定されている場合、replacement_valueのデータ型を返します。 check_expressionとしてリテラルNULLが提供され、replacement_valueが提供されていない場合、intを返します。
値がNULL
であるかどうかを確認している場合は、日付値を返そうとしない限り(これはそうではないようです)、日付に変換する必要はありません。
代わりに、次を使用します。
SELECT ISNULL( DOB , '')
どっちが戻る
''
値がNULL
の場合。
NULL
日付はNULL
(値なし)です。一方、空の文字列は0
に評価されます。これは、SQL Serverでは1900-01-01
からの日数を暗黙的に表す整数です。