gpt4 book ai didi

MySql排序问题

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

考虑我有一个名为“test”的表的情况


-------
content (varchar(30))
-------
1
abc
2
bcd
-------

if i use order by

Select * from test order by content asc

i could get result like


--------
content
--------
1
2
abc
bcd
---------

但是有什么方法可以使用查询得到以下结果


--------
content
--------
abc
bcd
1
2
---------

最佳答案

为了通过整理,您可以通过测试第一个字符来完成...看起来您希望任何以数字开头的内容都在任何面向 alhpa 的内容之后...类似于 Ted 的 ISNUMERIC() 表示,但我的快速检查在 MySQL 中没有显示这样的功能。所以另一种选择......因为 ASCII 列表中的数字小于“A”(字符 65)

Select * 
from test
order by
case when left( content, 1 ) < "A" then 2 else 1 end,
content

虽然我见过不同的 CONVERT() 调用,但我没有可用的 MySQL 来确认。但是,除了上面的 case/when 之外,您还可以添加 SECOND case/when 并在“content”值上调用一些 UDF() 或其他转换函数。如果字符串以 alpha 开头,它应该返回一个零值,以便第一种情况/何时将它们保持在列表的顶部,然后因为所有都不可转换为数字将具有零值......没有影响在排序上,最后是内容本身,它将保持 alpha 顺序。

但是,如果您的第二个 case/when/convert 函数调用确实返回了一个数值,那么它将在数字分组段内正确排序...然后将取代内容...但是,如果内容有点像

100 smith rd and 
100 main st

他们将在相同的“100”类别数值中排序,但随后按内容的字母顺序排序

100 main st
100 smith rd

100

关于MySql排序问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5882770/

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