对不起,如果你已经回答了这个问题,我已经进行了广泛的搜索,但我没有找到答案(可能是因为我不确定措辞是否正确?& \8 T B' J& Y7 @( R
是否可以sort_by设置前缀的字母顺序?例如,我在一个表中有一个大学列表。一些大学Universityof(如剑桥大学)为前缀,而其他大学则以(如达勒姆大学)为前缀。MySQL定义一个被忽视的前缀吗?! ]9 T8 y' U9 P
例如,以下列表: D: R: Y4 i* x
University of CambridgeUniversity of BristolDurham Universitykings College London应该命令 . a2 B# T% t& ~% a! k- |* W! IUniversity of BristolUniversity of CambridgeDurham UniversityKings College London 8 I7 N7 \* L. H8 v6 o% m2 a$ a解决方案: ' ^ }2 u6 s- N N 可以这样做:) H/ b* x" Z# A0 A
ORDER BY IF(SUBSTRING(name,1,14) = 'University of ',SUBSTRING(name,15),name)在此表上创建视图,name_value向IF()上面的表达式投射了一个额外的列,这可能是个好主意。然后,您可以根据此列进行排序和选择,而无需污染您的查询IF()。 - u. Y/ s/ W7 M& y示例视图,假设大学名称存储在列中name:) g$ I, T1 B" q% d. r6 h
CREATE VIEW Universities AS SELECT list_universities.*, IF(SUBSTRING(name,1,14) = 'University of SUBSTRING(name,15) name) AS name_value FROM list_universities;然后,你可以从Universities进行相同的选择list_universities,除此之外,还会有额外的一个name_value列出供您选择或排序。 - D+ G) p9 `5 h$ Z; b0 J请注意,这种方法(以及ORDER BY IF(...))任何索引都不能使用name提高排序性能。