MySQL中的字母数字/自然排序 - 30年了我们还是做不到吗?😤

MySQL中的字母数字/自然排序 - 30年了我们还是做不到吗?😤

💡 原文英文,约2900词,阅读约需11分钟。
📝

内容提要

QA团队需要对列表进行字母数字排序,作者尝试用MySQL解决但遇到困难。经过多次尝试,提出了一种生成列的方法,虽然不完美,但比其他方案更有效,希望能找到更好的解决方案。

🎯

关键要点

  • QA团队要求对列表进行字母数字排序,作者尝试用MySQL解决但遇到困难。
  • 作者认为MySQL应该能够处理排序,而不是在代码中进行排序。
  • 经过多次尝试,作者提出了一种生成列的方法,虽然不完美,但比其他方案更有效。
  • 测试数据包含多种格式的字符串,作者希望找到通用的排序方法。
  • 尝试了多种排序方法,包括强制数字排序和基于长度的排序,但都未能达到预期效果。
  • 最终,作者使用了生成列的方法,通过填充数字来实现更好的排序效果。
  • 虽然这种方法有局限性,但在特定场景下效果良好。
  • 作者希望能找到更好的解决方案,并鼓励其他人提出改进意见。

延伸问答

MySQL如何进行字母数字排序?

MySQL本身不支持直接的字母数字排序,作者尝试了多种方法,包括生成列和强制数字排序,但都未能完全解决问题。

作者提出了什么解决方案来改善MySQL的排序?

作者提出了一种生成列的方法,通过填充数字来实现更好的排序效果,虽然仍有局限性。

在尝试MySQL排序时,作者遇到了哪些具体问题?

作者遇到的问题包括混合数据类型导致的排序混乱,以及现有方法无法满足通用排序需求。

作者对MySQL的期望是什么?

作者希望MySQL能够提供更好的字母数字排序功能,而不是依赖于代码中的排序。

作者尝试了哪些排序方法?

作者尝试了强制数字排序、基于长度的排序和字符替换等多种方法,但效果均不理想。

生成列方法的局限性是什么?

生成列方法的局限性在于它只能处理特定场景,且对数字长度有要求,不能处理超过8位的数字。

➡️

继续阅读