你看我有一组条目要按字母顺序排列。虽然有些条目以“The”开头。我想要的是忽略“The”并从下一个单词开始排序。例如:
$titles->order_by("name", "ASC")->find_all() // Sample query
- 亚伯拉罕
- 全景
- 恶毒的
我想要的:
- 亚伯拉罕
- The Malevolent//忽略排序中的“the”
- 全景
我真正想要的东西”
- 亚伯拉罕
- Malevolent, The//有点重新排列
- 全景
我怎样才能在这里做到这一点?:
$titles->order_by("name", "ASC")->find_all();
如果不是,那么您有什么建议?
我有一种强烈的预感,即使用 REGEX 将达成交易。虽然我不知道如何不进入软件级别。
我使用的是 Kohana 3 ORM,上个月才开始使用。请放轻松。
非常感谢。
最佳答案
您可以使用条件select
和substring
函数;这些函数的确切名称可能因您使用的方言而异。在 Transact-SQL 中:
select if( left(name,3)='The', SUBSTRING(name,5), name) as name
from table
order by name
另一种方法:使用条件查找“The”部分,并将其替换为空字符串:
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
根据您的列名和表名进行更改。
关于使用 REGEX 的 PHP ORM Mysql 排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4011799/