0

WHEREMySQLクエリが句にあるものを動的に検索できる方法があるかどうか知りたいです。

たとえば、クエリが

Select * 
from table 
where item = 'Dell Optiplex 390'

次の行を検索する必要があります。

Dell Optiplex 390

Dell Desktop Optiplex 390

Dell Laptop Optiplex 390

Optiplex dual core 390

etc., etc.
4

4 に答える 4

1

この種の検索機能については、一致するアルゴリズムを探していると思います。レーベンシュタイン距離アルゴリズムを使用できます。phpを使用しているlevenshtein場合はこのアルゴリズムを実装するphp関数があり、一致するデータを取得します。また、 Needleman-Wunschアルゴリズムもあります。データが英語のみで、1つの単語列がある場合はSoundexアルゴリズムを使用できます。

これは始まりです。Mysqlにはこれらのアルゴリズムの多くの実装があります。

于 2012-09-17T07:33:46.710 に答える
1

そのフィールドがあなたの言葉のいずれかで構成されていることを知る必要がある場合。

Select *  
from table  
where item like '%Dell%' OR item like '%Optiplex%' or item like '%390%'
于 2012-09-17T07:34:20.633 に答える
0

ここに削除された良い答えがありました、私はその答えを次のように変更します:

Select * from table where 
lower(item) like '%dell%optiplex%390%' or
lower(item) like '%optiplex%390%' or
lower(item) like '%dell%laptop%390%' or ...
于 2012-09-17T07:31:05.757 に答える
0

LIKEワイルドカードでSQL句を使用します。

SELECT * 
FROM table 
WHERE item LIKE '%Dell%Optiplex390%';

これが良いリファレンスガイドです:

于 2012-09-17T07:36:03.807 に答える