2016-05-29 28 views
0

我想根據數據庫表中的多列搜索街道地址。 例如,我想「街道名,城市名,郵政編碼」從表結構等進行如下如何根據T-SQL中的多列篩選地址

 Address1 [nvarchar] 
    Address2 [nvarchar] 
    CityName [nvarchar] 
    ZipCode [numeric] 

案例1: 用戶可以Seearch:1)街道名稱,Washingtone DC,2837 = seachCon 或:b)清洗= seachCon 或c)郵編= seachCon

查詢1:1)工作的其他b和c不適用

Select *from AddressTable 
      Where seachCon like '%'+streetName+'%' or seachCon like '%'+cityName+'%' or seachCon like '%'+zipCode+'%' 

問題2:a)作出註釋作品而b )一個DC)的作品

Select *from AddressTable 
      Where streetName lik '%'+searchCon+'%' or cityName like '%'+searchCon+'%' or zipCode like '%'+searchCon+' 

***我想查詢或者工作在完整地址或部分

請幫

在此先感謝

+2

如果這就是你想要的,那就繼續做下去吧。如果你一路上遇到問題,那就到這裏張貼,告訴我們你做了什麼,並解釋它的行爲與你期望的不同。 – jmcilhinney

+0

jmc感謝您的回覆。 以上查詢有問題 1.如果用戶只輸入完整的城市名稱城市搜索,那麼它的工作原理。例如。當用戶進入洗衣機時它可以工作,但是當用戶只進入洗衣機時,它不起作用。查詢是select *從'地址,城市名稱,郵編'如'%'+地址+'%'或'地址,城市名稱,郵編'如'%'+ cityname +'%'或'地址,城市名稱,郵編'like'%'+ zipCode +'%' 2,在從地址像'地址,城市名,郵編%'等的地址在Washi,Washingtone上工作的地址替換問題的條件'地址,城市名稱,郵編':) – Own

+0

親愛的jmcilhinney, 請檢查我試圖解釋我的問題 – Own

回答

0
Declare @Search varchar(150) 
    Set @Search = 'Wash 2837' 

     Select Top 100* 
     From AddressTable 
     Where Address1+' '+Address2+' '+CityName +' '+ZipCode Like '%'+replace(ltrim(rtrim(@Search)),' ','%') 
     Order By 1,2,3 

這將返回所有記錄其包含WASH和2837(按照該順序)。

就我個人而言,我會把它放在一個存儲過程或udf中,使用@Search參數。 @Search將在執行前進行轉換

+0

它的工作。謝謝 – Own