在MySQL中,如果您使用以下命令,是否可以获得部分匹配:

SELECT * FROM table WHERE name LIKE '%orange llp%';

输出结果如下所示:

+-----------------+
| name            | 
+-----------------+
| Orange          |
| Telecomm Orange |
| Orange SA       | 
| Orange LLP      | 
+-----------------+

那么,即使查询不是一个精确的字符串,也只能根据其中的一部分来获得匹配? 希望这是有道理的.

编辑:我将其与NodeJS&Express后端一起使用,因此查询将由后端自动完成

推荐答案

由于您在下面更新了您没有使用php se

var searchQuery = "orange llp";
var splitQuery = searchQuery.split(" ");
var sqlQuery = "SELECT * FROM table WHERE ( name";
for(i = 0; i < splitQuery.length; i++){
  var query = splitQuery[i];
  sqlQuery += " LIKE '%" + query + "%' OR name ";
}
sqlQuery += " LIKE '%" + searchQuery + "%' )";

//Now run your query like below
con.query(sqlQuery);

您的输出查询如下所示

SELECT * FROM table WHERE ( name LIKE '%orange%' OR name  LIKE '%llp%' OR name  LIKE '%orange llp%' )

将这个类php search controller用于php版本

 $searchQuery = "orange llp";
 $search = new SearchController(SearchController::OR);
 $search->setOperators(SearchController::HAVE_ANY_QUERY);
 $search->setQuery($searchQuery)->split();
 $search->setParameter(array('name', /*more columns to search on*/));

 $sqlQuery = "SELECT * FROM table {$search->getQuery()}";

您还可以添加其他线索

$sqlQuery = "
  SELECT * FROM table {$search->getQuery()}
  AND id = anything else
";

Mysql相关问答推荐

如何重新采样SQL数据库

如何改进对另一个表中多行的查询依赖性

MySQL查询基于上次访问时间戳更新用户的问题

当日期附加到MySQL后,如何按日期说明排序?

奇怪的MySQL SELECT循环;但不是\G

Group_CONCAT CASE 乘法输出

使用Workbench时如何添加mysqldump配置标志

从连接表中try 按唯一ID计算行数 MySQL

MySQL - 事务绑定多个存储过程调用和回滚的简单方法?

如何根据购买的商品数量查找 unique_ids 的数量

关联同一个表中的两列

带有 PARTITION BY 子句的 ROW_NUMBER() 停止在 MariaDB 上工作

INNER JOIN 问题(MySQL 错误代码:1054)

MYSQL 或 Laravel Eloquent 如何从这个订单中统计细节

我将如何构建一个 SQL 查询来从交易表中 Select 第一次存款、第二次存款和额外存款

如何删除没有临时表的 MySQL 表中的所有重复记录

在另一个 where 语句(子查询?)中使用一个 sql 查询的结果

判断多个列的一个值

在 MySQL 中的子查询上使用 GROUP_CONCAT

表被指定了两次,既作为更新的目标,又作为 mysql 中数据的单独源