我的表格结构如下:
address_number address_street address_town address_county address_postcode
网站上有一个搜索框,人们可以在其中输入部分地址,我需要根据他们提交的信息确定如何返回准确的结果,但是邮政编码的存储有一些复杂性,如下所示: BN2 1HN和address_number
可以只有1个字符。
我已经尝试将CONCAT
地址字段放在一起并将其与输入进行比较但没有一个正常工作,我还尝试使用LIKE
循环遍历表中的每个字段但是这根本不令人满意。理想情况下,我希望首先返回最准确的结果,但我知道这只能用MATCH AGAINST
完成。
如果您有PayPal捐赠按钮(提供礼仪允许这样做?),我们将非常感谢任何帮助,并且明确的答案会让您喝一杯。这是我的第一个问题,因为我很顽固,通常喜欢把这些东西拼出来为自己解决。
答案 0 :(得分:0)
由于提及
,有人可能会猜到你正在使用MySQLMATCH(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%'
要像谷歌一样,您需要尝试对用户输入的内容进行大量修改,并根据用户输入的内容,字面上包含的内容等来命令它们。