重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

いつも大変お世話になっております。
よく分かっていなくて申し訳ありません。

SELECT … FROM A Right Outer Join B B on B.c =A.d  というようなSQL文で
B.cはvarcharでA.dはintです。
B.cは大多数の場合は数値なので動くのですが、稀に文字列が入ったときにエラーになってしまいます。
ここでエラーにならずに、そこで呼ぼうとしたものがなければNullになるようなよい方法がありましたら、ご教示いただけますと幸いです。

以下の添付画像のような結果を得られると幸いです。

「結合で、条件左右で型が違った時エラーにな」の質問画像

A 回答 (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()を利用してください。
    • good
    • 0
この回答へのお礼

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

お礼日時:2012/08/30 23:01

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す