• ベストアンサー

結合で、条件左右で型が違った時エラーにならない方法

いつも大変お世話になっております。 よく分かっていなくて申し訳ありません。 SELECT … FROM A Right Outer Join B B on B.c =A.d  というようなSQL文で B.cはvarcharでA.dはintです。 B.cは大多数の場合は数値なので動くのですが、稀に文字列が入ったときにエラーになってしまいます。 ここでエラーにならずに、そこで呼ぼうとしたものがなければNullになるようなよい方法がありましたら、ご教示いただけますと幸いです。 以下の添付画像のような結果を得られると幸いです。

質問者が選んだベストアンサー

  • ベストアンサー
  • Siegrune
  • ベストアンサー率35% (316/895)
回答No.1

SELECT … FROM A Right Outer Join B B on B.c =Convert(varchar(10),A.d) varchar(10),は、 B.cの型にあわせる。 ただし、 今までは暗黙の型変換で、数値に変換されていたから条件が成立していたケースで条件が成立しない 場合がでてくるかもしれません。 例) B.cが' 1'で、A.dが1のとき、 数値に変換されると、どちらも1ですが、 文字に変換すると、 B.cが' 1'で、A.dが'1 'になって等しくならないかも。 というようなことがおきたら、 on trim(B.c) = trim(Convert(varchar(10),A.d)) trim()を利用してください。

Galax01
質問者

お礼

できました。 良い手段をありがとうございます。 助かりました。

関連するQ&A