给定一个搜索字符串,我需要选择每个记录(在执行搜索的字段中),至少有一个单词以给定文本开头.
例如:
'John Doe'
必须使用以下搜索字符串进行选择:
'joh'
'do'
'JOHN doe'
没有被选中
'ohn'
'oe'
我需要(可能)避免全文搜索.
我发现的工作是
$query = 'SELECT * FROM MYTABLE WHERE SEARCHFIELD LIKE "' . $searchText . '%"'
. 'OR SEARCHFIELD LIKE "% ' . $searchText . '%"'
我问是否有更好的方法来做到这一点.
(对于“更好的方式”,我的意思是更好的性能或相同的性能,但更优雅)
此外,由于查询将使用预准备语句构建,我应该如何在搜索字符串中使用LIKE元字符?
最佳答案 用这个:
$query = "SELECT * FROM MyTable WHERE searchfield LIKE CONCAT('%', ?, '%')";
您不需要OR条件 – 如果字段与search%匹配,它也将匹配%search%.