0

私は mysql でクエリを作成していますが、問題があります: これは私の列構造です

|country|
--------
Boston
--------
Chicago
--------
washington

問題は、次のような検索項目がある可能性があることです。

North Washington
Boston Easht
South Chicago

だから私はそのような %like% 演算子を使用してそれを一致させようとしています:

select * from am_ciudad where Ciu_Nombre LIKE '%NORTH BOSTON';
select * from am_ciudad where Ciu_Nombre LIKE 'CHICAGO%';
select * from am_ciudad where Ciu_Nombre LIKE '%South Chicago%';

2番目は「シカゴ」という単語で始まるため一致しますが、クエリにプレフィックスがない場合、クエリ文字列で少なくとも1つの一致で検索する方法はありますか?

4

3 に答える 3

3

IN方法

検索クエリのコンマ区切りリストを使用します。

SELECT * FROM am_ciudad WHERE Ciu_Nombre IN('North', 'Washington', ...)

REGEXP方法

遅くなると想像できREGEXPますが、ベンチマークはしていません。

SELECT * FROM am_ciudad WHERE Ciu_Nombre REGEXP(North|Washington|...)
于 2013-07-24T15:30:06.553 に答える
0

他の検索は存在しないため、一致しません。

I love Boston Red Sox というフレーズで Boston と一致させたい場合は...LIKE '%Boston%';、%s をワイルド カードとして使用する必要があります。そのため、一致させる単語の前後に %s を使用して、何が来ても構わないことをクエリに伝えます。前後。の検索文字列は、明らかに持っていないものを...LIKE '%NORTH BOSTON';探していることをクエリに伝えています。<anything>North BOSTON;

うまくいけば、それは理にかなっていて、役に立ちます。

S

于 2013-07-24T15:34:48.027 に答える
-1

お使いのバージョンの mysql がサポートしているかどうかはわかりませんが、試してみる価値はあります。

select * from am_ciudad where Ciu_Nombre in (NORTH,BOSTON);

他の場合も同様です。スペースを「,」に置き換えてください。

于 2013-07-24T15:44:53.803 に答える