如何基于T-SQL中的多列过滤地址

时间:2016-05-29 05:37:34

标签: c# sql-server tsql

我想根据数据库表中的多个列搜索街道地址。  例如我想从表结构中“街道名称,城市名称,邮政编码”等如下

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

案例1:        用户可以查看:a)街道名称,Washingtone DC,2837 = seachCon                       或者:b)洗涤= seachCon                       或c)邮政编码= seachCon

查询1:a)其他工作b和c不起作用

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

查询2:a)注意到工作,而b)和c)工作

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

***我希望查询可以使用完整地址或部分

请帮忙

提前致谢

1 个答案:

答案 0 :(得分: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(在该序列中)的所有记录。

就个人而言,我会将其放在存储过程或带有@Search参数的udf中。 @Search将在执行前进行转换