1

次のSQLケースステートメントがあります。

select tracking_num,
case
    when source_one is not null then source_one
    else source_two
end source_value
from ...

source_one と source_two は倍精度です。上記の SQL を実行すると、返される source_value 列は int 精度です。

同僚は、列名の先頭に ohd_ を追加することを提案しました。

select tracking_num,
case
    when source_one is not null then source_one
    else source_two
end ohd_source_value
from ...

これにより、正しい値が返されます (返される列の名前は「source_value」です)。

ohd_ プレフィックスはオラクルの標準ですか? ドキュメントがどこにも見つかりません。また、この変換を実行するためのより良い方法はありますか? おそらく、CAST キーワードを使用してですか?

返信ありがとうございます。

DB バージョン: Oracle Database 11g Enterprise Edition リリース 11.2.0.3.0 - 64bit

編集:私が言及した ohd_ プレフィックスのフォローアップとして。これは、オラクルのバグ #1312311 の回避策としてクライアントに組み込まれていることがわかりました。OHDは「Oracle Hack Double」の略らしい。

4

2 に答える 2

1

あなたの状況は正しくないようです。

Oracle 自体は、コード化された介入がなければ、列のエイリアスのみに基づいて型を変換するわけではありません。

ただし、返される型を完全に確認するには、ステートメントで選択した値をキャストできます。SELECT

于 2013-05-13T18:05:36.237 に答える