2013-04-16 40 views
1

我有一种感觉,有没有简单的答案,这Q,但在这里不用反正。我在MySQL中使用Codeigniter。我拉资源的标题列表从数据库中包含的查询:排序名单按字母顺序忽略“”

SELECT * FROM resource ORDER BY title ASC 

,并想将它们按字母顺序排序忽略“”在开始。类似的信息(从another question):

  • 土豚
  • 甲壳虫
  • 的海狸鼠

显示为:

  • 土豚
  • 甜菜乐
  • 的海狸鼠

One answer提出了一些凌乱的SQL这可能是一种可能性,但我想获得一个通用的算法,这里面我可以适用于所有项目,这是一个共同的问题。

如果没有简单的答案那么它并不重要 - 它只是一个“装饰音”为我的用户:)

回答

3

如何:

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

谢谢,戈登,裂缝它。我不是很熟悉SQL的功能,只用了几个现在又一遍,但一看之下职能MySQL手册(http://dev.mysql.com/doc/refman/5.5/en/functions.html)使我能够理解你所做的一切。很简单,当你知道如何:) –

0

您可以为“标题”重复的列然后删除该列中的所有'the'。

首先更新表复制的“标题”列

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