如何在mysql预处理语句中正确使用WHERE LIKE?

时间:2014-03-13 17:02:51

标签: mysql

我正在试图弄清楚如何在这个准备好的声明中添加LIKE

SELECT convention_name FROM events_master 
WHERE (convention_name = ?);

目标是查看约定名称是否与convention_name中已存在的内容类似。我知道它已经检查了完全匹配。

提前致谢。

3 个答案:

答案 0 :(得分:0)

例如:

 String query = "SELECT convention_name FROM events_master WHERE convention_name like ?";
 PreparedStatement stm = conn.prepareStatement(query);
 stm.setString(1, "%car%");

您的参数可能包含wildchar%,然后它会找到例如card,scart ..

如果此子串匹配不够,则可以使用soundex算法查找类似的字符串。有关更多选项,请参阅how to compute similarity between two strings in MYSQL

答案 1 :(得分:0)

SELECT convention_name FROM events_master WHERE(convention_name LIKE'partofname'+'%');

%字符是一个百搭字符,所以如果你把它放在后面,它会搜索以'partofname'+ blah开头的任何内容。

如果它是Like ='%partofname%',则partofname可以在其之前或之后包含字符。

答案 2 :(得分:0)

  

如果SQL LIKE子句与%字符一起使用,那么它将起作用   像UNIX中的元字符(*),同时列出所有文件或   命令提示符下的目录。

     

没有%字符,LIKE子句与等号非常相似   以及WHERE子句。

$sql = $dbh->prepare(SELECT convention_name FROM events_master 
WHERE convention_name LIKE ?");

$sql->execute(array('%'.$yourSearchString.'%'));