2017-02-06 10 views
1

私はSQLクエリを持っています。これはアドレス欄でテーブルを検索します。私の問題はCityの分野です。 私は家の番号と彼なしで検索列の通りを仮定したが、私はKolin IV、KolínIIなどのような近所の部門を忘れていた。私の質問は、何とかSQL関数を使って都市の名前地区が属していることを知らさずに?アドレス欄でのSQL - LIKE検索

$where = " WHERE (LOWER(city) LIKE LOWER('%$fullAddress%') 
OR LOWER(street) LIKE LOWER('%$fullAddress%') 
OR CAST(postal_code AS TEXT) LIKE LOWER('%$fullAddress%') 
OR CAST(house_number AS TEXT) LIKE LOWER('%$fullAddress%') 
OR (LOWER(street || ', ' || city) LIKE LOWER('%$fullAddress%')) 
OR (LOWER(street || ' ' || CAST(house_number AS TEXT)) LIKE LOWER('%$fullAddress%')) 
OR (LOWER(city || ' ' || CAST(postal_code AS TEXT)) LIKE LOWER('%$fullAddress%')) 
OR (LOWER(street || ', ' || city || ' ' || CAST(postal_code AS TEXT)) LIKE LOWER('%$fullAddress%')) 
OR (LOWER(street || ' ' || CAST(house_number AS TEXT) || ', ' || city) LIKE LOWER('%$fullAddress%')) 
OR (LOWER(street || ' ' || CAST(house_number AS TEXT) || ', ' || city || ' ' || CAST(postal_code AS TEXT)) LIKE LOWER('%$fullAddress%'))) AND deleteby is null"; 
$results = $fce->_slctSQL("public.configurations_view", "", "services", $where, "", " ORDER BY city ASC, street ASC, house_number ASC, postal_code ASC", ""); 
+0

ところで:私は比較すると: Vrchlické789、コリーンIV 28002 - そのOK Vrchlické789、コリーン28002 - そのFAIL –

+0

を完全なアドレスにすべてのものを比較すると、不要と思われます。 –

答えて

0

あなたは、これが機能することを見つけるかもしれない:

OR (LOWER(city || ' ' || CAST(postal_code AS TEXT)) LIKE LOWER(REPLACE('%$fullAddress%', ' ', '%')) 

都市が複数の単語の名前を持っている場合しかし、これは、他の問題をもたらす可能性があります。

+0

ありがとう –

関連する問題