MW211 EXIT

devlog
MSSQL/UNIONのCAST誤認
2015年03月15日
ものすごく話を単純化して説明すると、以下の様なSQL文を実行した場合…
┌──────────────────────────────────────┐
│SELECT NULL                                                                 │
│UNION ALL                                                                   │
│SELECT 'a'                                                                  │
└──────────────────────────────────────┘
以下のようなエラーが発生することがある。
┌──────────────────────────────────────┐
│nvarchar の値 'a' をデータ型 int に変換できませんでした。                   │
└──────────────────────────────────────┘
NULLをint型と誤認して、文字型(nvarchar型)と不整合となったようだ。

但し、これは上記をそのまま実行しても発生しない。
VIEWを介した時に発生するようだ。

とにかくこれを回避するには、以下のようにNULLをCASTすればいいようだ。
┌──────────────────────────────────────┐
│SELECT CAST(NULL AS nvarchar)                                               │
│UNION ALL                                                                   │
│SELECT 'a'                                                                  │
└──────────────────────────────────────┘
分類:MSSQL