您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

高级MySQL按字母顺序排序的前缀?

高级MySQL按字母顺序排序的前缀?

您可以这样做:

ORDER BY IF(SUBSTRING(name, 1, 14) = 'University of ', SUBSTRING(name, 15), name)

在此表上创建一个视图,name_valueIF()上面的表达式投射一个额外的列,这可能是一个好主意。然后,您可以按此列排序并选择它,而不必使用来污染您的查询IF()

示例视图,假设大学名称存储在列中name

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列供您选择或排序。

请注意,这种方法(以及ORDER BY IF(...))将无法使用任何索引name来改善排序性能

MySQL 2022/1/1 18:47:39 有348人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶