1

私にはpriceという列があり、すべての値はTEXTなので、「$26.71」のようになります。この列を降順で並べ替えたいのですが、列がINTEGERとして定義されておらず、すべての値の前に「$」文字があるため、並べ替えることができません。これを機能させるにはどうすればよいですか?ありがとう。

4

2 に答える 2

5

を組み合わせltrimcast、並べ替える実際の数値を取得できます。

select * from table order by cast(ltrim(price, '$') as numeric) desc

ltrim複数の通貨がある場合にも機能することに注意してください。のように、それらをすべて並べるだけ'$€'です。ltrimその文字列にない文字にヒットするまで、左側からすべての文字を削除します。

于 2009-08-21T11:38:27.357 に答える
2

Mehmet、理想的には、価格を通貨/小数/数値のデータ型として保存し、UIに「$」を追加する必要があります。エリックのソリューションは当面の問題に対しては機能しますが、システムが成長するにつれて、これらの選択のパフォーマンスはますます悪化します。

于 2009-08-21T12:13:04.450 に答える