[英]SQL sort a column(varchar(255)) with numeric sort with alphanumeric data
I am using SQL server(MySQL Ver 14.14 Distrib 5.7.21, for Linux (x86_64)). 我正在使用SQL服务器(MySQL Ver 14.14 Distrib 5.7.21,Linux(x86_64))。 I want to sort data like this. 我想对这样的数据进行排序。
DocTyp-2649
DocTyp-2650
DocTyp-2651
DocTyp-2652
DocTyp-26036
DocTyp-26037
DocTyp-26038
my query is 我的疑问是
SELECT doc_unique_id FROM docs ORDER BY doc_unique_id ASC
my result is 我的结果是
DocTyp-26036
DocTyp-26037
DocTyp-26038
DocTyp-2649
DocTyp-2650
DocTyp-2651
DocTyp-2652
what can u do? 你能做什么?
Try this query 试试这个查询
SELECT doc_unique_id
FROM docs
ORDER BY cast(replace(doc_unique_id, 'DocTyp-', '') as int)
You could explicitly sort the data by using substring()
function (SQL Server) to get the numerical data 您可以使用substring()
函数(SQL Server)显式排序数据以获取数值数据
select *
from table
ORDER BY
cast(substring(doc_unique_id, charindex('-', doc_unique_id)+1, len(doc_unique_id)) as int)
尝试这个:
select doc_unique_id from docs ORDER BY CAST(SUBSTRING_INDEX(doc_unique_id, '-', -1) AS UNSIGNED) ASC;
ORDER BY长度(doc_unique_id),doc_unique_id ASC
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.