gpt4 book ai didi

mysql - 如何在 mySQL 中自定义排序顺序并检查字符串的开头?

转载 作者:行者123 更新时间:2023-11-29 02:24:38 28 4
gpt4 key购买 nike

我找到了几个 questions on stackoverflow处理自定义排序,自定义排序字母。但是,我找不到问题的解决方案。

假设我们有一个这样的表:

 # videoid #
F01
F02
F031
F032
G01
G02
GEO01
PR011
PR012
TRI01
TRI021
TRI022
VEK01

我们想按非字母顺序对其进行排序,而不是 A-Z,它应该是 G、F、GEO、TRI、PR、VEK。为此,我必须定义自定义排序并考虑使用 % 通配符来获取以例如开头的所有结果。 “F”。

我尝试了 mysql 的 CASE WHEN 查询,但当有 LIKE 比较时它似乎不起作用:

SELECT * FROM `videos`
ORDER BY CASE `videoid`
WHEN videoid LIKE 'G%' THEN 1
WHEN videoid LIKE 'F%' THEN 2
WHEN videoid LIKE 'GEO%' THEN 3
WHEN videoid LIKE 'TRI%' THEN 5
WHEN videoid LIKE 'PR%' THEN 4
WHEN videoid LIKE 'VEK%' THEN 6
ELSE 0
END

我的尝试

WHEN (LEFT(videoid, 1) = 'G') THEN 1
WHEN (LEFT(videoid, 1) = 'F') THEN 2
WHEN (LEFT(videoid, 3) = 'GEO') THEN 3
...

也失败了。

我也尝试过使用 FIELD 但没有成功:

SELECT * FROM `videos`
ORDER BY FIELD(videoid, 'G%','F%','GEO%','TRI%','PR%','VEK%');

什么是正确的 mysql 查询?

最佳答案

你的语法错误。尝试这样的事情:-

SELECT * FROM `videos`
ORDER BY CASE
WHEN `videoid` LIKE 'GEO%' THEN 3
WHEN `videoid` LIKE 'G%' THEN 1
WHEN `videoid` LIKE 'F%' THEN 2
WHEN `videoid` LIKE 'TRI%' THEN 4
WHEN `videoid` LIKE 'PR%' THEN 5
WHEN `videoid` LIKE 'VEK%' THEN 6
ELSE 0
END

这可能对你有帮助。

关于mysql - 如何在 mySQL 中自定义排序顺序并检查字符串的开头?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24795592/

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