簡體   English   中英

MySQL中的自然排序

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM