对多个地址字段的匹配失败,我无法解决

时间:2012-09-21 21:44:36

标签: sql full-text-search street-address

我的表格结构如下:

address_number  address_street  address_town  address_county  address_postcode

网站上有一个搜索框,人们可以在其中输入部分地址,我需要根据他们提交的信息确定如何返回准确的结果,但是邮政编码的存储有一些复杂性,如下所示: BN2 1HN和address_number可以只有1个字符。

我已经尝试将CONCAT地址字段放在一起并将其与输入进行比较但没有一个正常工作,我还尝试使用LIKE循环遍历表中的每个字段但是这根本不令人满意。理想情况下,我希望首先返回最准确的结果,但我知道这只能用MATCH AGAINST完成。

如果您有PayPal捐赠按钮(提供礼仪允许这样做?),我们将非常感谢任何帮助,并且明确的答案会让您喝一杯。这是我的第一个问题,因为我很顽固,通常喜欢把这些东西拼出来为自己解决。

1 个答案:

答案 0 :(得分:0)

由于提及

,有人可能会猜到你正在使用MySQL
MATCH(col1,col2) ... AGAINST(expr)

但是这是一种使用LIKE的方法,这可能有助于SQL Server:

/*
CREATE TABLE tab1 (address_number VARCHAR(10),  address_street VARCHAR(50), 
address_town VARCHAR(50),  address_county VARCHAR(50),  address_postcode VARCHAR(50))
INSERT INTO tab1 VALUES ('100','Queen Street','Winchester','Hartford','XYZ 123')
INSERT INTO tab1 VALUES ('10','Downing Street','London','','XYZ 124')
--*/
SELECT * FROM Tab1
WHERE (address_number+' '+address_street+' '+address_town+' '+address_county
+' '+address_postcode + ' '+replace(address_postcode,' ','')/*remove blank*/
) LIKE '%100 QUEEN%'

要像谷歌一样,您需要尝试对用户输入的内容进行大量修改,并根据用户输入的内容,字面上包含的内容等来命令它们。