我有一个使用 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
使用基于正则表达式的模式匹配:
WHERE postcode RLIKE '^$search( ?[0-9][A-Z]{2})?'
SELECT postcode
FROM data
WHERE postcode LIKE 'SW1 %'
SELECT postcode FROM data WHERE postcode LIKE '$search %'
但是假设用户仅插入 SW,它不会返回任何内容,而对于您当前的查询,它将返回以 SW 开头的任何内容。取决于你想做什么。