mysql - 在mysql的CONCAT中添加通配符

标签 mysql wildcard concatenation

我想搜索三个字段:id、名称和地址。我希望我的搜索有点智能。

订阅者表

id         |     firstname     |      lastname     |     address
N29-0001   |     John          |      Doe          |     California
N29-0002   |     Jonathan      |      Morson       |     Miami

到目前为止我的查询

select subscriberid, CONCAT(firstname," ",lastname) as fullname, address, city from subscriber where id like "%N29 Joh%" or CONCAT(firstname," ",lastname) like "%N29 Joh%" or address like "%N29 Joh%" or city like "%N29 Joh%"

我希望我的查询能够搜索,如果我输入 N29 Joh,它将搜索 John Doe。

最佳答案

您可能需要全文索引。但是,如果您想要匹配任何单词并且不关心性能,则可以使用正则表达式:

select subscriberid, CONCAT(firstname, ' ', lastname) as fullname,
       address, city
from subscriber
where subscriberid regexp 'N29|Joh' or
      concat(firstname, ' ', lastname) like 'N29|Joh' or
      address like 'N29|Joh' or
      city like 'N29|Joh';

关于mysql - 在mysql的CONCAT中添加通配符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40986889/

相关文章:

sql - 为什么 "SELECT DISTINCT a, b FROM..."返回的记录少于 "SELECT DISTINCT A + ' |' + B FROM..."?

php - mysql if 语句如何

elasticsearch - Elasticsearch query_string通配符语法

java - 嵌套通配符

windows - grep 类似 findstr 的语法

C# 连接/合并动态类型变量

具有多个查询的 php/mysql

mysql - 内部加入 like 子句

mysql - 存储 ID 列表 mysql

mysql - 离线同步(Performance UUID为主键)