2017-02-03 3 views
0

JQueryのUIオートコンプリートを使用し、ひどいデータベーススキーマで作業することで、用語の先頭を検索することができます。JQueryオートコンプリートで用語とその略語を検索する

のは、私は、データベース内の次の教会を持っていると仮定しましょう:

St Ignatius 
St Mary of Sacred Heart 
Saint Joseph 
Saint Peter the Apostle 
St Peter First Lutheran Church 

がどのようにユーザーのタイプ サン、それは両方の サンセント

を返すことができ、私はこの単純な考えSQL UNION:

SELECT School_Name FROM mi_firstyear_advisors WHERE (School_Name LIKE '%Sain%') 
UNION 
SELECT School_Name FROM mi_firstyear_advisors WHERE (School_Name LIKE 'St %'); 

私の問題の解決策はありますか?その

使用CHARINDEX(のようなSQLを使用するには

+0

School_Name LIKE '%SAINの%' OR School_Name LIKE 'セント%で' いいえ? – Laurianti

+0

クエリはジョブを完了しますか? –

+0

それはしません。 1つは一致して返されますが、両方は返されません。 – Joseph

答えて

0

DECLARE @Name nvarchar(max) 
Begin 
SELECT School_Name FROM mi_firstyear_advisors WHERE CHARINDEX(@Name,School_Name) 
End 

はその作品を願っています!

0

私のソリューション:

switch($term){ 
     // If any variant of 'saint' is entered, search for any variant of 'saint' 
     case (preg_match('/st .*/', $term) ? true : false): 
     case (preg_match('/st\..*/', $term) ? true : false): 
     case (preg_match('/sai.*/', $term) ? true : false): 
     $stmt = $conn->prepare('SELECT School_Name FROM mi_firstyear_advisors WHERE School_Name LIKE ":term" OR School_Name LIKE "st %" OR School_Name LIKE "st. %" OR School_Name LIKE "%saint%"'); 
     break; 

     // else just look for the given term 
     default: 
     $stmt = $conn->prepare('SELECT School_Name FROM mi_firstyear_advisors WHERE School_Name LIKE :term'); 
    } 
関連する問題