使用 REGEX 的 PHP ORM Mysql 排序

标签 php mysql regex

你看我有一组条目要按字母顺序排列。虽然有些条目以“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,上个月才开始使用。请放轻松。

非常感谢。

最佳答案

您可以使用条件selectsubstring 函数;这些函数的确切名称可能因您使用的方言而异。在 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/

相关文章:

php - Mysql - 将行转换为列

查看 Mysql 错误但在正常查询中工作

regex - 使用Grok从路径字符串中过滤掉UUID并返回路径

c# - 电子邮件验证 : converting a regular expression written in PHP (preg) to . NET(正则表达式)

php - 如何在一个语句中进行这两个查询。一种用于搜索,一种用于普通查询。我在搜索系统上做了这个

mysql - MySQL 数据库中的 É 与 E

java - 在线 cooking 书..我可以使用 Springtool 和 Java 吗?

java - 尝试从字符串中提取某些数字

javascript - 尝试编写一个正则表达式,其中换行符可能出现在组中的任何位置

php - 如何将动态数据库值从一个html元素连接到另一个?