このタイプを1.1,1.1.1,1.2,2.1,2.1.1,2.3、...などにソートしたいと思います。このように私はこの列のVarcharデータ型を使用していますが、何が起こるかは、この10.1.1の後、9.9.9まで適切にソートされています。ここでの並べ替えは1.1,1.1.1,1.2.2のようになります。10.1.1、 2.1,2.1 .1、...など。このように私もDECIMALを使ってみましたが結果はありませんでした。Mysqlで "1.1.1"フォーマットタイプをソートする
答えて
データベース内ではなく、3つの異なる列に値を解析することができます。アプリケーションコードでより簡単に行うことができます。そうすれば、簡単になります
select ... order by col1, col2, col3
おかげさまで.. !! –
あなたの番号を固定サイズとして保存することをお勧めします。
- 1.1.1 => 001001001(またはショート1001001中)
- 1.1 => 1001000
- 9.9.9 => 9009009
あなたが数としてあなたの変数を格納することができますこの方法です。取得時には、モジュロを使用して数字を文字列に戻す必要があります。私の例では999は各セグメントの最大値です この方法はIPアドレスを保存する方法です(192.168.1.1は192168001001になります) 。
Thanks Buddy .. !! –
これを試してみてください:
SELECT
*
FROM
my_table
ORDER BY
CAST(SUBSTRING_INDEX(my_col, '.', 1) AS UNSIGNED) ASC,
CAST(SUBSTRING_INDEX(SUBSTRING_INDEX(my_col, '.', -2), '.', 1) AS UNSIGNED) ASC,
CAST(SUBSTRING_INDEX(my_col, '.', -1) AS UNSIGNED) ASC
基本的には、文字列の各部分の部分文字列を取得し、左から右に行く、文字列の各部分を使用して行をソートし
。更新:上記のクエリは、正確に3つの数字に対して機能しますが、このクエリを使用し、その後、4つの数字をサポートするためのアリ:
SELECT
*
FROM
my_table
ORDER BY
SUBSTRING_INDEX(SUBSTRING_INDEX(CONCAT(my_col, '.'), '.', 1), '.', -1) + 0
, SUBSTRING_INDEX(SUBSTRING_INDEX(CONCAT(my_col, '.'), '.', 2), '.', -1) + 0
, SUBSTRING_INDEX(SUBSTRING_INDEX(CONCAT(my_col, '.'), '.', 3), '.', -1) + 0
, SUBSTRING_INDEX(SUBSTRING_INDEX(CONCAT(my_col, '.'), '.', 4), '.', -1) + 0
そして、あなたはより多くの数をサポートしたい場合は、単に次の番号で「XX」に置き換えて、次の行を追加します。
, SUBSTRING_INDEX(SUBSTRING_INDEX(CONCAT(my_col, '.'), '.', XX), '.', -1) + 0
クレジットへこの回答は非常によく似た質問です:https://stackoverflow.com/a/17849200/2518200
こんにちは、この回答をお寄せいただきありがとうございますが、依然として適切な結果が得られません。上記のクエリから取得 結果: 7.3.1.1、7.3.1.2、7.3.1.4、7.3.2.2、7.2.4、12.2.1、12.2 結果欲望 7.2.4、7.3.1.1、7.3.1.2 、7.3.1.4、7.3.2.2、12.2、12.2.1 –
@Jaineshshah申し訳ありませんが、そのクエリは3つの数字でした。あなたは最大4つの数字以上を持っているので、私は自分の答えを変えなければなりませんでした。私の更新された答えを見てください。この新しいクエリは任意の長さに使用できます。 –
- 1. ロギングのフォーマットタイプ
- 2. mysqlをソートする方法
- 3. Golang time.Parse新しいフォーマットタイプの定義
- 4. MySqlはソートをソートしますか?
- 5. com.firebaseui:firebase-ui-auth:1.1.1 ERROR
- 6. カスタムルールでMySQLデータをソート
- 7. Cocoapods 1.1.1ターゲットが `ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES`をオーバーライド
- 8. リップルアニメーション:fromPageは未定義です!ネオンアニメーション1.1.1+
- 9. のMySQL:ソート
- 10. Store/List not reloading Sencha 1.1.1
- 11. CodaSlider 1.1.1高さの問題
- 12. 複数の行をソートするMySQL
- 13. MySQLのソートは異なる
- 14. mySQLでASCIIをINTとしてソート
- 15. MySQL、文字で整数文字をソート
- 16. ubuntu 11.10でopenca-base-1.1.1を作る方法は?
- 17. PHPとMySQLでソート関数をカウントする
- 18. mysqlで2つの列をソートする方法
- 19. アルファベット順にソートMYSQL結果「」
- 20. mySQLのソート問題JOIN
- 21. ソート値2列内とMySQL
- 22. MySQLデータベースの複雑なソート
- 23. MySQLのソートは、アンダースコア最後
- 24. PHPのMySQL結果のソート...?
- 25. MySQLグループ化ソートの問題
- 26. GORMクエリがデータベース・エラー(Grailsの1.1.1)
- 27. フォーマットコードはvscode 1.1.1とtypescript 1.8.10で動作します
- 28. 角材の日付ピッカーが1.1.1で壊れていますか?
- 29. MySQL - テーブル文字列でソートして制限する
- 30. CocoaPods 0.39から1.1.1にアップグレードする際のエラー
dbに挿入するときにunique_idのようなもう1つの列を作成します。これは一意であり、検索時にソートに使用できます。 – Abhishekkumar
ハックとして、INET_ATONとINET_NTOAを使用することができます – Strawberry
http://stackoverflow.com/questions/7508313/mysql-sorting-of-version-numbersを参照してください。関数を使用して結果をソートするすべてのソリューションは使用できませんインデックスなので遅くなる可能性があります。パフォーマンスが優れている場合は、文字列の各部分を索引付けできるように別々の列として格納することを検討してください。 –