gpt4 book ai didi

MySQL 将 STRING 排序为 INT 并插入

转载 作者:行者123 更新时间:2023-11-29 02:04:59 24 4
gpt4 key购买 nike

我有这样一个数据集:

print_id
--------
2b
1
2
4b
4a
3
6
2a
5

打印ID的格式可以是:/([0-9]+)([a-e]{1})?/

我想要的是先按编号排序,如果有则按字母排序。如果没有字母,则它是该数字顺序中的第一个。所以结果应该是这样的:

print_id
--------
1
2
2a
2b
3
4a
4b
5
6

我试过 ORDER BY (print_id + 0) 它可以正确地对数字进行排序,但它并不能完全解决问题。有什么建议吗?

最佳答案

ORDER BY 子句中可以有多个表达式:

ORDER BY print_id + 0, print_id

这将首先尝试按数字对它们进行排序(丢弃字母后缀),如果它们在数字上相等,它将按它们的字符串值(包括字母后缀)对它们进行排序。对于您描述的规则,唯一会破坏的是您有前导零;例如,此 ORDER BY 子句会将 '01b' 排在 '1a' 之上。这会发生在您的数据中吗?

关于MySQL 将 STRING 排序为 INT 并插入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8191991/

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