gpt4 book ai didi

mysql - sql查询有助于对同时包含字符串和数字的字段进行排序

转载 作者:行者123 更新时间:2023-11-29 08:49:14 25 4
gpt4 key购买 nike

我有一个名为 source_recid 的文本字段。它像字符串一样存储一半字符串一半数字。

示例

shop.orders.32442

语法是DATABASENAME.TABLENAME.RECID

我的目标是扫描这个列并找出其中最大的 RECID(整数)。

所以,在这样的情况下

shop.orders.32442
shop.orders.82000
shop.orders.34452

这将是 source_recid 为 shop.orders.82000 的记录。为什么?因为 82000 恰好是最大的整数。

什么 SQL 语句可以获得该记录?

对此的一个选择是创建一个新列 ( the_ids ) 并移动其中的所有整数,然后运行类似这样的操作

select source_recid from mytable 
where source_recid like 'shop.orders.%'
order by the_ids DESC
LIMIT 1

有没有办法在不执行此步骤的情况下完成此任务?

最佳答案

首先,除非您的所有 RECID 永远且始终恰好是五个字符长,否则您所做的选择将不起作用,因为“shop.order.9”会比“shop.order.9”大。 10",这是错误的。

我认为我们在这里需要做的是提取数字部分,将其转换为整数,然后按该整数进行排序。现在,我无法访问 mySQL,因此这可能不完全正确,但应该接近......

SELECT
CAST(SUBSTRING_INDEX(RECID,'.',-1) AS INT) AS RecIdNumber
FROM
table
WHERE
RECID LIKE 'shop.order.%'
ORDER BY
RecIdNumber DESC
LIMIT
0, 1

这将获取最后一个点之后的部分,将其转换为 INT,将其命名为“RecIdNumber”,并按其排序。

我希望这会有所帮助。

关于mysql - sql查询有助于对同时包含字符串和数字的字段进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11749709/

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