PHP-MYSQL使用LIKE搜索邮政编码

PHP-MYSQL使用LIKE搜索邮政编码,php,mysql,Php,Mysql,我有一个使用LIKE搜索邮政编码的查询。现在,如果有人输入完整的邮政编码,例如SW14 4NP,那么邮政编码就可以了。但如果有人输入SW1,它将返回任何带有SW1+结果的内容。我如何使它,如果有人把SW1,它将只显示SW1邮政编码,而不是SW11,SW14等 我的问题是: SELECT postcode FROM data WHERE postcode LIKE '$search%' 邮政编码数据库存储为SW14 4NP等,并带有空格 SELECT postcode FROM data WHE

我有一个使用LIKE搜索邮政编码的查询。现在,如果有人输入完整的邮政编码,例如SW14 4NP,那么邮政编码就可以了。但如果有人输入SW1,它将返回任何带有SW1+结果的内容。我如何使它,如果有人把SW1,它将只显示SW1邮政编码,而不是SW11,SW14等

我的问题是:

SELECT postcode FROM data WHERE postcode LIKE '$search%'
邮政编码数据库存储为SW14 4NP等,并带有空格

SELECT postcode FROM data WHERE postcode LIKE '$search %'
只需在搜索键后添加空格。然后,它会找到所有的SW1代码(或任何你想要的代码),但不会找到SW11

SELECT  postcode
FROM    data
WHERE   postcode LIKE 'SW1 %'
只需在搜索键后添加空格。然后,它会找到所有的SW1代码(或任何你想要的代码),但不会找到SW11

SELECT  postcode
FROM    data
WHERE   postcode LIKE 'SW1 %'
但是假设用户只插入SW,它将不返回任何内容,而在当前查询中,它将返回以SW开头的任何内容。这取决于你想做什么

但是假设用户只插入SW,它将不返回任何内容,而在当前查询中,它将返回以SW开头的任何内容。取决于您要执行的操作。

使用基于模式的匹配:

WHERE postcode RLIKE'^$search(?[0-9][A-Z]{2})'
基于使用的模式匹配:

WHERE postcode RLIKE'^$search(?[0-9][A-Z]{2})'

假设数据以正确的空格存储。假设数据以正确的空格存储。请提供示例表数据感谢您的回复,eggyal的答案更适合,因为它具有更大的灵活性。我忘了提到我有一些功能,可以验证它是完整的邮政编码还是外部邮政编码。我只是无法让查询只显示基于外部邮政编码的结果。谢谢大家的回答,因为他们都做得很好。请提供样本表数据谢谢回复,eggyal的答案更适合,因为它有更多的灵活性。我忘了提到我有一些功能,可以验证它是完整的邮政编码还是外部邮政编码。我只是无法让查询只显示基于外部邮政编码的结果。谢谢大家的回答,因为他们都做得很好。