3

列をアルファベット順に並べ替えることはできませんが、「The」などの特定の単語は無視してください。

例えば

通常のクエリは

string 1
string 3
string 4
the string 2

帰りたい

string 1
the string 2
string 3
string 4

これは可能ですか?

編集 私はThe、Aなどのような複数の単語を置き換えることを探していることに注意してください...これはできますか?

4

4 に答える 4

5

あなたが試すことができます

SELECT id, text FROM table ORDER BY TRIM(REPLACE(LOWER(text), 'the ', ''))

ただし、大規模なデータセットでは、行ごとに新しい文字列を再計算する必要があるため、非常に遅くなることに注意してください。

IMOには、インデックスが付いた別の列を使用する方がよいでしょう。

複数のストップワードの場合は、呼び出しをネストし続けREPLACEます。:)

于 2009-11-27T12:36:11.493 に答える
0

はい、ORDER部分で式を使用できるはずです。

SELECT * FROM yourTable ORDER BY REPLACE(yourField, "the ", "")
于 2009-11-27T12:34:35.927 に答える
0

これは、例としてすべての主要な「The」を置き換えます

SELECT  *
FROM    YourTable 
ORDER BY REPLACE(Val,'The ', '')
于 2009-11-27T12:35:24.070 に答える
0

私は75,000をはるかに超えるレコードの音楽リストを持っていますが、同様の状況に遭遇しました。'A'、'An'、または'The'で始まるすべての文字列をチェックし、その部分を文字列から切り捨てるPHPスクリプトを作成しました。また、すべて大文字を小文字に変換し、その文字列を新しい列に格納しました。その列にインデックスを設定した後、完了しました。

明らかに最初の列を表示しますが、新しく作成されたインデックス付きの列で並べ替えます。今から1秒ほどで結果が出ます。

于 2009-11-27T13:21:26.277 に答える