質問

列をアルファベット順にソートすることはできませんが、「The」などの特定の単語を無視します

e.g。

通常のクエリは返されます

string 1
string 3
string 4
the string 2

返品したい

string 1
the string 2
string 3
string 4

これは可能ですか?

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

役に立ちましたか?

解決

試すことができます

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

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

IMOには、インデックスのある別の列を使用することをお勧めします。

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

他のヒント

これにより、先頭のすべての" The"例として

SELECT  *
FROM    YourTable 
ORDER BY REPLACE(Val,'The ', '')

はい、ORDER部分で式を使用することが可能であるはずです:

SELECT * FROM yourTable ORDER BY REPLACE(yourField, "the ", "")

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

明らかに最初の列を表示しますが、新しく作成されたインデックス付き列でソートします。すぐに結果が得られます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top