我认为这个问题的解决方案应该很简单,但我无法找到解决问题的方法。
我正在使用英国邮政编码。我的参考db看起来像这样:
+----+----------+----------+
| ID | postcode | leadtime |
+----+----------+----------+
| 1 | AB10 | 1 |
| 2 | AB11 | 2 |
| 3 | B7 | 3 |
| 4 | SE16WD | 1 |
+----+----------+----------+
此表中的值仅代表完整英国邮政编码的前半部分,但这是我们需要检查的全部内容。
现在,用户有一个表单,他们可以在其中键入完整的邮政编码,以检查提前期是多少(然后将完整的邮政编码用作递送地址的一部分)。
英国邮政编码可以有不同的长度,你可以在第一个和第二个半之间输入或不输入空格。现在我有一些PHP代码基本上可以接受用户键入的任何内容,并尝试通过所有不同的布局可能性运行它,但它并不总是有效。
我想在MySQL中找到一种方法。我开始玩
了SELECT leadtime FROM myTable WHERE postcode LIKE '$postcode%'
但这仅适用于前几位数字。只要用户输入整个邮政编码,此查询就无法在表格中找到任何内容。
我不能为我的生活,找到一种方法来匹配这两个价值观!!
我确定我在这里遗漏了一些非常基本的东西!
非常感谢您的时间和帮助。
编辑MySQL表以更好地反映要检查的参考邮政编码的多样性。
答案 0 :(得分:2)
SELECT * FROM user;
+---------+--------+
| user_id | user |
+---------+--------+
| 3 | George |
| 1 | John |
| 2 | Paul |
| 4 | Ringo |
+---------+--------+
SELECT * FROM user WHERE 'Ringo Starr' LIKE CONCAT(user,'%');
+---------+-------+
| user_id | user |
+---------+-------+
| 4 | Ringo |
+---------+-------+
答案 1 :(得分:0)
除了从空格中剥离邮政编码并将数据库'邮政编码'字段与该邮政编码的4个字符子串进行比较之外,我没有别的办法。
答案 2 :(得分:0)
你可以随时:
substr($postcode, 0,2)
; intval()
; 上述技术可能有点复杂,但您可以更好地控制最终结果。
如果您需要一个如何实现此目的的代码示例,请发表评论,我将更新答案。
答案 3 :(得分:0)
试试这个
用通配符替换空格
select USERNAME FROM LOGIN_USERS WHERE USERNAME LIKE CONCAT('%',REPLACE('user_inPut',' ','%'),'%');