考虑数据库表列中的以下西类牙语字符串:
¿Donde estas?
!Aqui ando¡
Porque
...Donde
¿Porque?
如果我使用 mySQL 提供的不同西类牙语排序规则对表列进行排序,标点符号将包含在排序中。一些西类牙语排序规则会将标点符号放在开头,一些放在结尾。
但是,根据西类牙文学院的说法,排序仅适用于官方西类牙语字母表(a、b、c、d、e、f、g、h、i、j、k、l、m、n , ñ, o, p, q, r, s, t, u ,v ,w ,x, y, z),因此绝不能使用标点符号来对字符串进行排序。 所有 mySQL 西类牙语排序规则使用的顺序都是错误的,我不想使用它们。
根据西类牙文学院的说法,上述字符串的正确排序顺序是:
!Aqui ando¡
¿Donde estas?
Donde estas
...Donde
Porque
¿Porque?
那么,我的下一个最佳选择是什么......
我可以在查询中使用正则表达式来订购没有标点符号的订单吗?
或者,我别无选择地创建一个列,我们称它为 sort_name,其中包含没有标点符号的字符串,并使用该列进行排序?这是最好的方法吗?
请记住,我仍然需要在 mySQL 中使用西类牙语排序规则来对字符 ñ 进行排序,这是一个介于 n 和 o 之间的字符。
最佳答案
在西类牙语中,最多第一个字符是标点符号或者有一个...
。你可以这样做:
order by (case when left(col, 3) = '...' then substr(col, 4)
when left(col, 1) in ('!', '?', . . .) then substr(col, 2)
else col
end)
(抱歉,我的键盘上没有适合 in
列表的西类牙文字符。)
关于mysql - 如何在没有标点符号的情况下在mySQL中排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18340661/