以下のtableAとBがあります。列cdの値は文字列で見た目は同じです。
tableA
cd | |
---|---|
999 | |
AAA | |
A9 | |
A |
tableB
cd | |
---|---|
999 | |
AAA | |
A9 | |
A |
tableAとtableBをjoinしたいのですが一つも結びつかなかったためlengthを使って長さを調べました。
すると以下のようになりました。(列名cd以外の列名はcdの変換方法で列の値が変換結果です)
tableA
cd | LENGTH(cd) | LENGTH(CAST(cd AS char)) | LENGTH(CAST(cd AS varchar)) |
---|---|---|---|
999 | 11 | 1 | 11 |
AAA | 11 | 1 | 11 |
A9 | 11 | 1 | 11 |
A | 11 | 1 | 11 |
tableB
cd | LENGTH(cd) |
---|---|
999 | 3 |
AAA | 3 |
A9 | 2 |
A | 1 |
tableAの型?をtableBに合わせてjoinしたいのですが、どのようにすれば良いでしょうか。
またLENGTH(CAST(cd AS char))で「1」、LENGTH(CAST(cd AS varchar))で「11」になるのはなぜでしょうか。
LENGTH(CAST(cd AS varchar))をするとtableBと同じ結果が返ってくると思っておりました。
ご教示の程何卒よろしくお願いいたします。
TRIM(cd)をすることでjoinについては解決しました。
tableAのLENGTH(CAST(cd AS char))が1になる理由が分からないのでご教示いただけないでしょうか。
よろしくお願いいたします。
あなたの回答
tips
プレビュー