【发布时间】:2021-12-20 11:58:30
【问题描述】:
例如,在数据库中,我有一个带有短语 DN-NP 的行。
在输入字段中,我输入 DN- 并希望找到该行。
这是示例http://sqlfiddle.com/#!9/f9235a/4
尝试使用FULLTEXT索引和MATCH AGAINST
SELECT `name`
FROM `domains`
WHERE MATCH (`name`) AGAINST ('DN*' IN BOOLEAN MODE);
没有结果。
这里https://dba.stackexchange.com/a/111895/55397 建议与LIKE 结合使用。目前的想法是在 php 中类似于
if( strlen($_POST['input_field_value']) <= 2 ){
$sql = 'SELECT `name`
FROM `domains`
WHERE MATCH (`name`) AGAINST ('DN*' IN BOOLEAN MODE)
OR `name` LIKE "%DN%"';
}
但是 LIKE "% %" 太慢了?任何想法如何解决问题(查找包含特殊字符的短语)?
LOCATE(性能)呢?
SELECT name AS name7
FROM domains
WHERE LOCATE('DN',`name`)>0;
【问题讨论】:
标签: mysql sql-like match-against