我有一个使用LIKE搜索邮政编码的查询。现在邮政编码很好,如果有人把完整的邮政编码,例如SW14 4NP。但是如果有人要放入SW1,它会返回任何带有SW1 +结果的东西。我怎么能这样做,如果有人把SW1,它只显示SW1邮编而不是SW11,SW14等。
我的查询是:
SELECT postcode FROM data WHERE postcode LIKE '$search%'
邮政编码的数据库存储为SW14 4NP等,并带有空格。
答案 0 :(得分:3)
SELECT postcode FROM data WHERE postcode LIKE '$search %'
只需在搜索键后添加空格即可。然后它会找到所有SW1代码(或你找的任何东西),但不会找到SW11
答案 1 :(得分:2)
使用基于regular expression的模式匹配:
WHERE postcode RLIKE '^$search( ?[0-9][A-Z]{2})?'
答案 2 :(得分:1)
SELECT postcode
FROM data
WHERE postcode LIKE 'SW1 %'
答案 3 :(得分:0)
SELECT postcode FROM data WHERE postcode LIKE '$search %'
但是说用户只插入SW,它将不返回任何内容,而对于当前查询,它将返回以SW开头的任何内容。取决于你想做什么。