gpt4 book ai didi

MySQL ORDER_BY 字符串中的部分整数

转载 作者:太空宇宙 更新时间:2023-11-03 11:10:54 25 4
gpt4 key购买 nike

我在 MySQL 数据库中有一系列“编号”的 varchar 字段:

+-----------+
| name |
+-----------+
| thing 1 |
| thing 2 |
| thing 3 |
| ... |
| thing 10 |
| thing 11 |
+-----------+

我想按上面所列的方式订购它们。但是,一个简单的 ORDER_BY table.name 会产生如下内容:

thing 1
thing 10
thing 11
thing 2
thing 3
...

这是有道理的,因为 MySQL 将整个字段视为字符串 (varchar)。但是,我尝试了多种排序方法,包括 CAST(name AS DECIMAL)name + 0。这将按小数部分排序,忽略字符串部分。这些都不起作用,因为我需要按 name first 排序,然后 then 按尾随小数点排序。

我尝试了 ORDER_BY name, name + 0,但似乎没有任何效果。我如何在该子集中执行 ORDER_BY 然后执行 ORDER_BY? (我认为这会起作用)。

最佳答案

您需要进行两种排序 - 首先是 name 部分,然后是数字部分,如下所示:

order by left(name,instr(name,' ')),cast(right(name,instr(name,' ')+1) as decimal)

关于MySQL ORDER_BY 字符串中的部分整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8690894/

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