我的MySQL服务器上有一个位置数据库,包含英国邮政编码,邮政城镇,县和坐标。如果有人要搜索" connahs" (实际结果是" Connah' Quay"),因为没有包含撇号,所以不会返回任何结果。这同样适用于连字符和其他符号。
在这个例子中,邮政城镇" Connah's Quay"是正确的格式,所以我不能从数据库中删除该符号。
到目前为止,我的查询是:
SELECT * FROM uk_postcodes WHERE postal_town LIKE "connahs%" ORDER BY postal_town LIMIT 25
有什么方法可以搜索包含符号(connah' s)而不是(connahs)的字段,这样无论用户是否使用撇号,它都会返回结果?
答案 0 :(得分:0)
使用mysql替换功能。查询将如下:
SELECT * FROM uk_postcodes WHERE REPLACE( postal_town, "'", "" )
LIKE "connahs%" ORDER BY postal_town LIMIT 25
希望它会对你有所帮助。
答案 1 :(得分:-2)
我假设您在代码中使用php。
// get the value of searched word from searchbox or something...
$keyword = $_POST['uk_postcodes'];
// avoid sql injection to, also read for special characters
$keyword = mysql_real_escape_string($keyword);
$keyword = stripslashes($keyword);
$query = "SELECT * FROM uk_postcodes WHERE postal_town LIKE %$keyword ORDER BY postal_town LIMIT 25";
在上面的代码中,您可以输入任何内容!