这出现了很多,我可以看到它出现在StackOverflow上的
XSLT,Ruby和
Drupal,但我没有看到它专门用于SQL.
所以问题是,当你以“The”,“A”或“An”开头时,如何正确地对标题进行排序?
一种方法是TRIM()那些字符串:
ORDER BY TRIM( LEADING 'a ' FROM TRIM( LEADING 'an ' FROM TRIM( LEADING 'the ' FROM LOWER( title ) ) ) )
前一阵子是suggested on AskMeFi(它需要LOWER()函数吗?).
我知道我也看到过某种Case / Switch实现,但这对谷歌来说有点困难.
显然,有许多可能的解决方案.什么是好的是SQL大师权衡其中有性能影响.
解决方法
我见过的一种方法是有两列 – 一列用于显示,另一列用于排序:
description | sort_desc ---------------------------- The the | the,The A test | test,A I,Robot | i,Robot
我没有进行任何真实世界的测试,但这样做的好处是能够使用索引,并且每次要按描述排序时都不需要字符串操作.除非您的数据库支持物化视图(MySQL不支持),否则在视图中将逻辑实现为计算列将不会提供任何好处,因为您无法索引计算列.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。