0

データをアルファベット順に並べ替えますが、「the」で始まるエントリは最初の単語による並べ替えを無視し、代わりに2番目の単語で並べ替えます。

たとえば、「The View」は、TではなくVの下に表示されます。これを行うための最良の方法は何ですか?

昔のようにできることは簡単ですが、一生思い出せません。ありがとう。

4

3 に答える 3

2

指定した順序でMySQLから結果セットを取得するには、次を使用できます。

ORDER BY TRIM(LEADING 'The ' FROM entry)

これにより複数のオカレンスが削除されるため、たとえば「TheNow」は「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が2番目の単語を取得するようにすることができます。

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 に答える