1

Sybaseサーバーへのクエリの1つは、ガベージデータを返すことです。いくつかの調査の結果、データ型がdoubleの列の1つが問題の原因であることがわかりました。その特定の列を選択しない場合、クエリは正しい結果を返します。質問の列は、小数点以下の桁数が多いdoubleです。小数点以下4桁までのラウンド関数を使用しようとしましたが、それでもデータが破損しています。クエリで列を正しく指定して正しいデータを取得するにはどうすればよいですか?

Windows7ボックスとSybaseAdaptiveServerエンタープライズドライバを使用しています。(Sybaseクライアント15.5)。32ビットドライバーを使用しています。

サンプル結果:

Windows7ボックスでSybaseASEドライバを使用した場合の誤った結果

"select ric_code as ric, adjusted_weight as adjweight from v_temp_idx_comp where index_ric_code='.AXJO' and ric_code='AQG.AX'"

 ric adjweight
 1 AQG.AX        NA
 2   \020        NA
 3   <NA>        NA

Merantドライバーを使用したWindowsXPボックスでの正しい結果

 "select ric_code, adjusted_weight from v_temp_idx_comp where index_ric_code='.AXJO' and ric_code='AQG.AX'"

 ric_code adjusted_weight
 1   AQG.AX    0.3163873547

よろしく、Alok

4

1 に答える 1

1

次のように数値に変換してみてください。

select ric_code as ric, weight, convert(numeric(16,4), adjusted_weight) as adjweight, currency as currency 
from v_temp_idx_comp 
where index_ric_code='.AXJO'
于 2012-05-08T10:30:34.550 に答える