gpt4 book ai didi

mysql按升序或降序选择

转载 作者:行者123 更新时间:2023-11-29 00:10:43 25 4
gpt4 key购买 nike

我的id或者主键是,数据类型是VARCHAR(50)

            0.0.01
0.0.100
0.0.101
0.0.1011
0.0.201
0.0.501
0.0.99
0.0.999
0.01.0
0.01.10
0.02.10
0.02.20
0.02.99
01.0.0
01.0.99
01.02.99
01.03.444
01.05.88
10.02.99
100.100.100
25.45.1001
99.99.99

我必须按排序顺序获取它所以我试过了

select id from table order by cast(id as decimal) desc;

但是没用

预期的顺序是在运行查询之后

            0.0.01
0.0.99
0.0.100
0.0.101
0.0.201
0.0.501
0.0.999
0.0.1011
0.01.0
0.01.10
0.02.10
0.02.20
0.02.99
01.0.0
01.0.99
01.02.99
01.03.444
01.05.88
10.02.99
25.45.1001
99.99.99
100.100.100

我用的是mysql

最佳答案

不是更简单,但您可以为每个小数位使用 substring_index

select *
from t
order by
substring_index(id,'.',1) * 1,
substring_index(substring_index(id,'.',-2),'.',1) * 1,
substring_index(id,'.',-1) * 1

解释

我使用了 substring_index 它会返回提供的列中的一段字符串,就像在上面的情况中一样,我使用 id 列来分隔符,即( .) 例如像 0.1.2 这样的字符串对于以上 3 sunstring_index 用法将返回如下

  • substring_index('0.1.2','.',1) 将给出结果 0
  • substring_index(substring_index('0.1.2','.',-2),'.',1) 将给出结果 1
  • substring_index('0.1.2','.',-1) 将给出结果 2

对于数字类型转换,我将 substring_index 的结果乘以 1,因此按表达式排序将首先按第一个点之前的数字对结果进行排序,然后是第二个点之前的数字,最后是数字在第二个点之后以升序方式

enter image description here

enter image description here

Demo

来源:

http://www.w3resource.com/mysql/string-functions/mysql-substring_index-function.php

关于mysql按升序或降序选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25237400/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com