首页 > 解决方案 > 用数字对 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 对该列进行排序?

标签: mysqlsorting

解决方案


假设订单 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);

演示


推荐阅读