0

我按字母顺序对数据进行排序,尽管以“the”开头的条目我希望忽略按第一个单词排序并改为按第二个单词排序。

例如“视图”将列在 V 而不是 T 下,最好的方法是什么?

我知道我可以做一件简单的小事,就像我过去常做的那样,但我一生都记不起来了。谢谢。

4

3 回答 3

2

要按照您指定的顺序从 MySQL 获取结果集,您可以使用:

ORDER BY TRIM(LEADING 'The ' FROM entry)

这将删除多次出现,因此例如“The Now”将作为“Now”返回。此外,它只会删除单词“The”后面的单个空格。

这可能区分大小写。

于 2012-08-08T21:59:38.140 回答
1

尝试:

SELECT COLUMN FROM TABLE ORDER BY TRIM(LEADING 'The ' FROM COLUMN);
于 2012-08-08T21:52:42.873 回答
1

您可以使用自己的比较函数,这样如果索引以“The”开头,php 将采用第二个单词:

function cmp($a, $b) {
    $a = preg_replace("/^the /i","",$a);
    $b = preg_replace("/^the /i","",$b);
    return strcmp($a,$b);
}

和排序:

$array = array("The Vektor", "Apple", "The Anchor", "Bee");
usort($array, 'cmp');
print_r($array);

我认为这应该可行.. ;) .. 此外,它不会从文本中删除“The”,因为比较的变量只是本地的:)

输出:

Array ( [0] => The Anchor [1] => Apple [2] => Bee [3] => The Vektor ) 
于 2012-08-08T21:57:30.347 回答