gpt4 book ai didi

mysql - ORDER BY varchar 列

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

我的数据库中有一个列,其中包含以下格式的数字

1-11-22-12-2等等

我希望能够按“第一个数字”、“第二个数字”进行排序

我试过这个:

ORDER BY CAST('session_number' as signed) ASC

但这不是正确排序第二个数字。

最佳答案

通过获取子字符串并强制转换为有符号来按第一部分排序:

CAST(SUBSTRING_INDEX(session_number, '-', 1) AS SIGNED) ASC, 
CAST(SUBSTRING_INDEX(session_number, '-', -1) AS SIGNED) ASC

或者创建已排序项目的 View :

CREATE VIEW v_sessions_ordered_by_session_number 
AS
SELECT *
FROM sessions
ORDER BY
CAST(SUBSTRING_INDEX(session_number, '-', 1) AS SIGNED) ASC,
CAST(SUBSTRING_INDEX(session_number, '-', -1) AS SIGNED) ASC;

然后将您的 View 用作表格:

SELECT some_field, session_number FROM v_sessions_ordered_by_session_number;


但是更好的解决方案是:

session_number设为十进制,如:1.11.22.1

如果不允许修改字段类型那么就

创建额外的:session_number_order 字段并保留十进制数据

关于mysql - ORDER BY varchar 列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51260490/

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