23

varchar フィールドを double (数値) に変換しようとしたときに、クエリに問題が発生しました。私はこのSQL文を持っています:

SELECT fullName, CAST(totalBal as numeric(9,2) FROM client_info ORDER BY totalBal DESC

totalBal実際には、 の値を降順に表示したいと考えています。しかし、そのフィールドは varchar にあるため、結果セットが間違っていることがあります。これは、このステートメントを使用してクエリを実行しようとしたときの結果セットです。

SELECT fullName, totalBal FROM client_info ORDER BY totalBal DESC 

結果セットは次のとおりです。

ここに画像の説明を入力

の並べ替えがtotalBal正しくありません。そこで、完全にソートできるように、varchar を数値に変換することにしました。何か案が?

4

2 に答える 2

42

orは精度と位取りが固定されているためDECIMAL()、 orを使用します。NUMERIC()

SELECT fullName, 
       CAST(totalBal as DECIMAL(9,2)) _totalBal
FROM client_info 
ORDER BY _totalBal DESC
于 2013-01-24T07:36:47.920 に答える
2

これはより望ましいかもしれません。つまり、代わりに float を使用します。

SELECT fullName, CAST(totalBal as float) totalBal FROM client_info ORDER BY totalBal DESC
于 2016-11-18T10:12:44.640 に答える