2011-06-16 69 views
0

在我的數據庫中的一個領域「的地點」將在那裏,它包含城市名稱,如「艾哈邁達巴德,阿南德,巴羅達」如何使在SQL Server查詢該數據比較數據的基礎上

在僱主節,當僱主進入「Anand」位置時,則會選擇上述記錄。
我怎樣才能讓這些搜索中的所有城市,城市艾哈邁達巴德和查詢時,搜索那麼這recorde會顯示

回答

0

最容易使用的「喜歡」

例如:

select * 
from MyTable 
where Location like '%Ahmadabad%' 

但是,這也會找到像'NewAhmadabad'這樣的城市。不確定你是否可以忽視。

你可以做這樣的事情,如果你不能忽視:

select * 
from MyTable 
where 
    Location like '%,Ahmadabad,%' or 
    Location like 'Ahmadabad,%' or 
    Location like '%,Ahmadabad' 
+0

如果我沒有錯,我應該用它代替%...%的charIndex ? – Pankaj 2011-06-16 08:26:21

1

正確的答案是,你需要你的正常化SQL模式一點。您需要三個獨立的表格:客戶,地點和customer_locations。位置表每個城市有一個記錄,至少有兩列:city_id和name。 customer_locations表具有兩列:customer_id和city_id。這被稱爲「查找」表,並允許您定義「多對多」關係。

現在您的查詢會更復雜一些,因爲您必須使用「連接」。但隨着複雜性的靈活性 - 您的搜索將是確切的,你會避免像意外拼寫錯誤的城市名稱(最終不匹配)記錄的問題。

我敢肯定,你必須做一些更多的研究,但是您的查詢看起來像:

select cust.*, city.* from customers cust inner join customer_locations cl on 
cust.customer_id = cl.customer_id inner join locations city on cl.city_id = city.city_id 
where city.name = 'Anand';