mysql - 用数字对 MySQL 文本列进行排序
问题描述
我已将这些文本存储在 MySQL 表列中,如下所示
Hello, Your Order Id is 3458
Sir, Your Order Id is 4833
With reference to the booking, your order Id is 4324
如何根据订单 ID 对该列进行排序?
解决方案
假设订单 ID 始终是列字符串中的最后一个单词,您可以尝试:
SELECT *
FROM yourTable
ORDER BY CAST(SUBSTRING_INDEX(col, ' ', -1) AS UNSIGNED);
如果订单可以出现在任何地方,那么它会变得更加棘手。如果您使用的是 MySQL 8+,那么REGEXP_REPLACE
就派上用场了:
SELECT *
FROM yourTable
ORDER BY
CAST(REGEXP_REPLACE(col, '^.*(?i)your order id is ([0-9]+).*', '$1') AS UNSIGNED);
演示
推荐阅读
- laravel - 在 windows 上安装 Vagrant 的问题
- c# - 预期类型为“System.Int64”,但实际值为“System.String”类型
- javascript - razorpay 订阅链接的开始日期问题
- terminal - 如何更改我的 zsh 终端中的默认主目录?
- spring - @Pattern 不适用于具有路径变量的控制器方法
- python - Leetcode 207. 课程安排 DFS 类似解决方案但不起作用,正在寻找错误检查
- node.js - 如何将图像或文件放入vue中的变量?
- stm32 - 如何在 STWIN 上的软件中进入引导加载程序(DFU 模式)
- java - java项目中使用JUnit 5的存储库依赖注入
- javascript - JavaScript 中的深度相等对象比较