[英]Natural sorting in MySQL
實際上,我在MySQL數據庫中有一個表。 該表包含帶有字母數字數據的列。 我需要對列中的數據進行排序。 我想實現的結果如下。
1
2
2.B3
5
10 A-1
10 A-3
11
12
B3-43
B3-44
B3 - 48
BSomething 3
BSomething 4
BSomething 9
D.1
D.2
D.10
D.12
我在Internet上找到了一些有關MySQL中自然排序的示例。 我寫了一個解決方案:
SELECT * FROM `myTable` ORDER BY IF(name RLIKE '[[:digit:]]+',1,2), name
不幸的是,它不能以正確的方式工作。 更准確地說,它將數字數據排序為1,10,2。 我需要一個在每種情況下都很好的解決方案。
嘗試使用length()函數,如果不起作用,請使用CAST() ...
嘗試:
SELECT * FROM `myTable` ORDER BY LENGTH(name) , name;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.