私は、とりわけ、いくつかの場所の住所を指定するフィールドを含むテーブルを持っています。私は、指定された検索語と一致するときに、そのテーブルからストリート名の一部だけを返す方法を見つけようとしています。MySQL:アドレステーブルから一意の通り名のリストを選択する必要があります
は、これまでのところ私はこれを持っている:それは私があるしたいALL家#、を含む全住所を返すの不要な副作用を持っていることはもちろん、除いて、大丈夫ん
SELECT `street` FROM `addresses`
WHERE (`street` LIKE '%searchTerm%')
GROUP BY `street`
ORDER BY LOCATE('searchTerm',`street`)
LIMIT 10;
通り自体の名前。しかし、どのように先頭の数字、ダッシュ、または#記号を取り除き、クエリーからストリート名を収集するかについては、私は迷っていますか?
これを行う方法はありますか?または、データを取得した後に結果をコード(PHP)で管理するだけですか?
ありがとうございます!
データの種類によって異なります。通りの名前にデータベース全体で1つの単語しか含まれていない場合は、その単語だけを取り出すことができます。しかし、それが複数の言葉なら何ですか?とにかく、関数呼び出しやデータ操作がクエリ時間に余分なオーバーヘッドを持つため、問題のこの部分にmysqlを使用しないでください。ストリート名を個別に索引付けして選択することができます。弾力的な検索のために行く方が良い。 – DecoderReloaded
データは、一般的な形式の要素を持つ単一のvarcharフィールドです。 "[[### - ] ####] Here Here [Street | Road | Crescent | Lane | Parkway | etc] 。明らかに通りの名前は複数の単語になる可能性があります。明らかな特徴は、最初の部分には数字だけが含まれている可能性があり、数字記号やダッシュ/ハイフンの後に空白が続くことです。 –
返信したいのですか?これは、最初のスペースと2番目のスペースの間にある単語を与えるでしょう。 '(SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(SUBSTRING_INDEX(street、 '、2)、' '、-1))' – miknik