2010-10-25 53 views
2

您看到我有一組要按字母順序排列的條目。儘管一些條目以「The」開頭。我想要的是忽略「The」並開始從下一個單詞中排序。例如:使用REGEX的PHP ORM Mysql排序

$titles->order_by("name", "ASC")->find_all() // Sample query 
  • 亞伯拉罕
  • 全景

我想要什麼:

  • 亞伯拉罕
  • 的Malevo借給 //忽略排序
  • 全景

我真正想要的是什麼」

  • 亞伯拉罕
  • 攻擊性的 //還挺重排
  • 全景 「中的」

H ow我可以這樣做嗎?:

$titles->order_by("name", "ASC")->find_all(); 

如果不是那麼你可能會建議?

我有強烈的預感,使用REGEX將達成協議。儘管我不知道如何進入軟件層面。

我使用Kohana 3 ORM並且只在上個月開始。請在我身上輕鬆一點。

非常感謝。

回答

0

您可以使用條件selectsubstring函數;這些功能的確切名稱可能會因您使用的方言而異。在Transact-SQL:

select if(left(name,3)='The', SUBSTRING(name,5), name) as name 
from table 
order by name 

而另一種方法:使用條件,找到「的」部分,並用一個空字符串替換:根據您的列名和表名

select TRIM(
    if(INSTR(shipnam,'The ') > 0, INSERT(shipnam,INSTR(shipnam,'Hyundai'),4,''), 
    if(INSTR(shipnam,' The ') > 0, INSERT(shipnam,INSTR(shipnam,'Hyundai'),5,''),shipnam)) 
) 
as shipname from tablename order by shipname 

變化。