数値的にSQLのORDERの文字
-
20-08-2019 - |
質問
私は文字として格納された数字の列を持っています。私は、この列にORDER BYを行うと私は次の取得ます:
100
131
200
21
30
31000
など。
どのように私は、これらの文字は、数値的に注文することができますか?私は何かを変換する必要があるか、すでにこのためのSQLコマンドや機能はありますか?
ありがとうございました。
解決
これを試してください:
ORDER BY CAST(thecolumn AS int)
他のヒント
これが私の仕事ます:
ORDER BY ABS(column_name)
これは、「自然の並べ替え」(Googleで「自然なソート」をルックアップする場合は、原料のトンを見つけることができます)で数値文字列を注文すると問題です。基本的にintとして文字列をキャストし、得られた値でソートすると、それを修正する必要があります。
この理由は、charデータ型で、あなたは文字列として行をソートしているということです。
ORDER BY CAST()
のアイデアは、しかし、この性能は、返された結果の数が増加するにつれて下がるだろう、正しいです。
、ベストプラクティスは、適当な数値データ・タイプを見つけ、それを変更することです。
あなたが本当に列を変更することはできませんし、あなた自身がパフォーマンスの問題を持つ見つけた場合は、、私は整数(ヌルが適切な値に変換されます)にキャスト値が含まれているソート順の列を持つことをお勧めします。
char値を挿入または更新が整数値に更新をトリガするように、索引ソート順列と、理想的には、CHAR列にトリガーを追加します。
いくつかの状況では、これは良い試合になるかもしれません。
ORDER BY LENGTH(column_name), column_name
あなたはすべての数字や文字と数字が、同じ長さのすべての組み合わせのいずれかの列を持っている場合は特に。
所属していません StackOverflow