gpt4 book ai didi

MySQL ORDER BY 似乎按十六进制排序而不是按字母顺序排序

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

我很难在此查询中进行排序

SELECT 
Strasse,
CONCAT(CAST(Hausnummer AS CHAR), COALESCE(Buchstabe, '')),
Name
FROM
Adresse
WHERE
GebietID = 'G20141205064123101'
ORDER BY
Strasse ASC , CONCAT(CAST(Hausnummer AS CHAR), COALESCE(Buchstabe, '')) ASC , Name ASC;

concat 用于连接数值和单个字符。结果列似乎是根据 HEX 值而不是实际字符串值排序。

有没有办法让它按字母顺序排列?

编辑:下面是一些示例数据:

'A20141205235645111', 'G20141205064123101', 'Amberg', 'Ahnherrnstraße', '6', NULL, 'Meier Johann Olga'
'A20141205235645361', 'G20141205064123101', 'Amberg', 'Ahnherrnstraße', '30', NULL, 'Stang Lidija Swetlana Waldemar'
'A20141215182839021', 'G20141205064123101', 'Amberg', 'Ahnherrnstraße', '6', NULL, 'MANFRED1'

结果:

'Ahnherrnstraße', '30', 'Stang Lidija Swetlana Waldemar'
'Ahnherrnstraße', '6', 'MANFRED1'
'Ahnherrnstraße', '6', 'Meier Johann Olga'

最佳答案

为什么不简单

ORDER BY
Strasse, Hausnummer, Buchstabe, Name;

concat 的结果是一个字符。这就是为什么您的顺序是词法的(30 在 6 之前)。如果您单独对列进行排序,Hausnummer 将被视为数字并按数字排序。如果两个 Hausnummers 相同,SQL 将在 Buchstabe 之后对这些条目进行排序。如果您使用 ASC,NULL 值将排在第一位,顺便说一句,这是默认值。

关于MySQL ORDER BY 似乎按十六进制排序而不是按字母顺序排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41614084/

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