web-dev-qa-db-ja.com

SQLでVarcharをDoubleに変換する方法は?

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 

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

enter image description here

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

13
Jay Marz

DECIMAL()またはNUMERIC()を使用してください。これらは固定精度およびスケール番号です。

SELECT fullName, 
       CAST(totalBal as DECIMAL(9,2)) _totalBal
FROM client_info 
ORDER BY _totalBal DESC
27
John Woo

これはより望ましい場合があります。代わりにfloatを使用します

SELECT fullName, CAST(totalBal as float) totalBal FROM client_info ORDER BY totalBal DESC
1
Hammad Khan