2013-04-16 90 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