【发布时间】:2011-03-16 05:15:51
【问题描述】:
这出现了很多,我可以看到它出现在 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 的实现,但这对 Google 来说有点困难。
显然有许多可能的解决方案。有什么好处是 SQL 专家权衡哪些对性能有影响。
【问题讨论】:
-
同意评论者对其中一个链接的 SO 问题的看法:规则可能比看起来更复杂。例如,您的特定建议可能无法正确排序以下列表:
The A Test、The B Test、The C Test。
标签: sql mysql sorting switch-statement trim