-1

空白を含む値を持つデータベースがあります。たとえば、「ラスベガス」。私のmysqlでは、照合を使用して検索を行っています。

select * where match(city) against ("LASVEGAS") 

空白なしでデータベースを検索するため、行は返されません。空白を含む検索を手伝ってください。

4

2 に答える 2

1

replaceクエリ内の空白を削除するために使用できます

select * from cityTable where replace(city," ","")="LASVEGAS"

replace関数の詳細については、こちらをご覧ください。

編集:一致が必要です

マッチが必要であり、マッチ内で置換を使用できないため、ここでは中間の方法を提案しています。(私の本当の提案はfulltext-index を都市列のような単純な列と一緒に使用しないことですが、奇妙な解決策を強制する要件がある場合がありますmatch)against

通常の都市の列の隣に「検索しやすい」都市の列 (fulltextインデックス サポートあり) を作成し、すべての空白とダッシュを削除することで、この問題を回避することができます。

|     City      |  CitySearch  |
|===============|==============|
|   Las Vegas   |   LasVegas   |
| San Francisco | SanFrancisco |
| Saint-Quentin | SaintQuentin |

後で検索を行うときは、代わりに列を使用しmatchて検索できます。ユーザーが検索したい都市名を入力したら、最初に列をクリアしたのと同じ方法でそれをクリアする必要があります。ユーザーが "Las Vegas"、"Las-Vegas"、"LasVegas" のいずれを入力しても問題ありません。これは、ユーザー データを消去すると、列に対して検索する "LasVegas" が返されるためです。againstCitySearchCityCitySearch

SQL クエリは次のようになります。

select * from cityTable where match(CitySearch) against ("LasVegas")

これがあなたの要件の範囲内になることを願っています

于 2013-08-27T16:18:48.210 に答える