Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
私にはpriceという列があり、すべての値はTEXTなので、「$26.71」のようになります。この列を降順で並べ替えたいのですが、列がINTEGERとして定義されておらず、すべての値の前に「$」文字があるため、並べ替えることができません。これを機能させるにはどうすればよいですか?ありがとう。
を組み合わせltrimてcast、並べ替える実際の数値を取得できます。
ltrim
cast
select * from table order by cast(ltrim(price, '$') as numeric) desc
ltrim複数の通貨がある場合にも機能することに注意してください。のように、それらをすべて並べるだけ'$€'です。ltrimその文字列にない文字にヒットするまで、左側からすべての文字を削除します。
'$€'
Mehmet、理想的には、価格を通貨/小数/数値のデータ型として保存し、UIに「$」を追加する必要があります。エリックのソリューションは当面の問題に対しては機能しますが、システムが成長するにつれて、これらの選択のパフォーマンスはますます悪化します。