2016-09-28 9 views
2
id | col1  | col2 | 
_________________________ 
1 | Aceh  | Denponda 
2 | Aceh  | Bonda Aceh 
3 | Sumatera | Asahan 
4 | Sumatera | Ondanar 

に基づいており、私は何をここに起こることは、それがこのソート、検索結果は、サブ文字列の位置

id | col1  | col2 | 
_________________________ 
1 | Aceh  | Denponda 
2 | Aceh  | Bonda Aceh 
4 | Sumatera | Ondanar 

ような結果を示ししかし、私が欲しいと行である今

SELECT * FROM table WHERe col2 LIKE '%onda%' 

このクエリを使用しますid 4は、WHERE節の類似性に最も近いものとしてonda

これはmですyの望ましい結果

id | col1  | col2 | 
_________________________ 
4 | Sumatera | Ondanar 
2 | Aceh  | Bonda Aceh 
1 | Aceh  | Denponda 

は基本的に私がここで何をしたい応じ 論理のような左から右

へCOL2の値にondaベースでWHERE句の最寄りの類似性に結果をソートすることですこの

  • 恩田 NAR
  • B 恩田アチェ
  • Denp 恩田

注:id列の並べ替えのために使用することはできません。

+1

INSTR機能を使用することができますか? – Phil

+2

それは検索結果では、検索結果が左から右の結果に最も近い検索結果がそれに応じてソートされるようにしたい。 –

答えて

2

あなたが注意LOCATE

SELECT 
* 
FROM table 
WHERE col2 LIKE '%onda%' 
ORDER BY LOCATE('onda', col2) 

で注文することができます:

LOCATE(substr,str), LOCATE(substr,str,pos) 

最初の構文は、文字列で 部分文字列SUBSTRが最初に現れる位置を返します。 str。 2番目の構文は、 の位置posで始まる、文字列str内の部分文字列substrの最初の出現位置 を返します。 substrがstrにない場合は0を返します。

また、あなたは*類似性*を定義するにはどうすればよい

+0

ちょうどそれが簡単ですか? WOW –

+1

はいそうですね。 :) 'INSTR'関数をチェックすることもできます。質問のタイトルを変更する場合は気にしないでください。 – 1000111

+1

ありがとうございました:)私は自分の問題のために助けを求める方法を知らない。ありがとうございます:) –

関連する問題