2011-03-07 6 views
1

こんにちは私は実際に数字だけを保持するvarchar2というテーブルIDを持つOracle DBを作成しています。 2000、30201。私はTO_NUMBER()関数を使用するが、結果はまだ不成功になるので、これらの値を数値として比較する必要がある。コードの例を以下に示します。どんな援助も深く感謝しています。varchar2を数値に変換すると結果が正しく生成されない

SELECT ID FROM facty WHERE to_number(ID)>2 ORDER BY ID 

現在の結果: 11、4、5、6、8、9

私はそれが4、5、6、8、9,11

+1

なぜ数字をテキストとして保存していますか?これは非効率的で、あなたのIDの1つが無効な番号である場合にも多くの問題を引き起こします。 –

答えて

2

を生成するために必要オラクルを使用しないでくださいが、にto_number(id)を含める必要があると思います。現在のクエリORDER BYは、数値変換ではなく、varcharフィールドを使用します。

+0

TIPに感謝します!私はORDER BY TO_NUMBER(ID)を試してみました。 – luhfluh

+0

私はそれが慣習ではないことを知っています。それは人生をはるかに難しくしますが、それは企業(レガシーなもの)の現在のデータ辞書であり、いくつかの値は後でアルファベット、例えば 'A302'と純粋な '30201'私はそれに固執しなければなりません。 – luhfluh

関連する問題