按字母顺序排序列表"""

时间:2013-04-16 18:40:57

标签: sql codeigniter sorting alphabetical

我觉得这个Q没有简单的答案,但无论如何都要进行。我正在使用Codeigniter和MySQL。我从数据库中提取资源标题列表,其中包含以下查询:

SELECT * FROM resource ORDER BY title ASC 

并希望按字母顺序对它们进行排序,忽略开头的“the”。像(来自another question):

  • 土豚
  • 甲虫
  • 海狸鼠

显示为:

  • 土豚
  • 甲虫
  • 海狸鼠

One answer建议一些混乱的SQL,这可能是一种可能性,但我想得到一个通用的算法,我可以在所有项目中应用,因为这是一个常见的问题。

如果没有简单的答案,那么这并不重要 - 这只是我的用户的“优雅笔记”:)

2 个答案:

答案 0 :(得分:4)

怎么样:

order by (case when title like 'The %' then substring(title, 5, 1000) else title end)

答案 1 :(得分:0)

您可以为'title'创建一个重复列,然后从该列中删除所有'the'。

首先更新表格以复制'title'列

ALTER TABLE resource
ADD title_less_the varchar(50) (same as title)

UPDATE resource
SET title_less_the = title

update resource (
set title_less_the = replace(title_less_the, 'the ', '')

然后当您搜索这样的内容时,不会删除已修改的列:

SELECT column1, column2, column3 FROM resource
ORDER BY title_less_the ASC