gpt4 book ai didi

mysql - 如何对 var length ids(复合字符串+数字)进行排序?

转载 作者:行者123 更新时间:2023-11-29 02:35:15 25 4
gpt4 key购买 nike

我有一个 MySQL 数据库,其键是这种类型的:

A_10
A_10A
A_10B
A_101
QAb801
QAc5
QAc25
QAd2993

我希望他们首先按字母部分排序,然后按数字部分排序,就像上面一样。我希望这是此列的默认排序方式。

1) 如何按照上面指定的方式进行排序,即编写一个 MySQL 函数?
2) 如何设置此列默认使用排序例程?

一些可能有用的限制条件:我 ID 的数字部分永远不会超过 100,000。我在一些 javascript 代码中使用这个事实将我的 ID 转换为将非数字部分与 (number + 1,000,000) 连接起来的字符串。 (当时我没有注意到上面的变体/子部分,例如 A_10A、A_10B,所以我将不得不修改我的代码的那部分。)

最佳答案

实现你想要的最好方法是将每个部分存储在它自己的列中,我强烈建议更改表结构。如果不可能,您可以尝试以下操作:

创建 3 个 UDF,它们返回字符串的前缀、数字部分和后缀。为了获得更好的性能,它们应该是原生的(Mysql 与任何其他 RDMS 一样,在复杂的字符串解析方面并不是很好)。然后您可以在 ORDER BY 子句或验证您的列的触发器主体中调用这些函数。在任何情况下,它都会比创建 3 列慢。

关于mysql - 如何对 var length ids(复合字符串+数字)进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6203534/

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