mysql-db で ajax-search を使用しています。例: 私が照会する「man」を検索します。
SELECT id FROM table WHERE name LIKE '%man%;
結果を並べ替えて、検索で始まるすべての結果をアルファベット順に並べたいと思います。
man
mankind
その後、次のように、すべての結果の幅をアルファベット順に検索 INSIDE にしたいと考えています。
iron man
woman
どうやってやるの?
mysql-db で ajax-search を使用しています。例: 私が照会する「man」を検索します。
SELECT id FROM table WHERE name LIKE '%man%;
結果を並べ替えて、検索で始まるすべての結果をアルファベット順に並べたいと思います。
man
mankind
その後、次のように、すべての結果の幅をアルファベット順に検索 INSIDE にしたいと考えています。
iron man
woman
どうやってやるの?
サブストリングを検証するために、ORDER BY
usingステートメントを作成できます。CASE
注:UPPER()
ここでは、大文字と小文字を区別しない一致のために、検索値と列値の両方を大文字に変換するために使用しています。それが必要でない場合は、を削除してくださいUPPER()
。
ORDER BY
CASE
/* Matches the start of the string */
WHEN UPPER(LEFT(name, 3)) = 'MAN' THEN 1
/* Doesn't match the end or the start (in the middle) */
WHEN UPPER(RIGHT(name, 3)) <> 'MAN' THEN 2
/* Matches the end of the string */
WHEN UPPER(RIGHT(name, 3)) = 'MAN' THEN 3
ELSE 4
END,
/* Then order by the name column */
name
INSTR()
この方法はかなり移植性が高いはずですが、私は以下の答えの方が好きです。
これを試して
SELECT id FROM table WHERE name LIKE 'man%';
UNION
SELECT id FROM table WHERE name LIKE '%man%';