首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >没有名字/姓顺序的全名SQL条件

没有名字/姓顺序的全名SQL条件
EN

Stack Overflow用户
提问于 2022-10-19 07:32:17
回答 2查看 42关注 0票数 0

给定一个名为全名的列,我如何在没有订单的情况下对名字/姓氏进行筛选?

在下面的javascript示例中,查询在按姓氏进行搜索时无效。

代码语言:javascript
复制
function getQuery(searchWord){
  return `SELECT * FROM user WHERE fullname like '%${searchWord}%' `
}
// trying to search fullname "Elon Musk"
getQuery("Elon M") // okay
getQuery("Musk E") // no result

通过关键字" Musk“查找" Elon”的查询是什么?

NB:列的名字和姓氏也存在

EN

回答 2

Stack Overflow用户

发布于 2022-10-19 07:44:54

您可以使用FULLTEXT MATCH AGAINST进行搜索。

代码语言:javascript
复制
SELECT * FROM user WHERE (MATCH (fullname) AGAINST ('${searchWord} IN NATURAL LANGUAGE MODE'))

您必须在列FULLTEXT search index上创建一个fullname

或者你可以用空间来分割你的searchWord,然后做LIKE '%$(searchWordPart1)%' AND LIKE '%$(searchWordPart2)%'等等。

票数 0
EN

Stack Overflow用户

发布于 2022-10-19 08:04:07

最后,我使用一些javascript解决了这个问题。

代码语言:javascript
复制
  function getQuery(searchTerm = '') {
    // " Musk  E " => ["Musk", "E"]
    const arr = searchTerm.split(/\s+/).filter((e) => e)
    // ["Musk", "E"] => (first_name like '%Musk%' or  last_name like '%Musk%') AND (first_name like '%E%' or  last_name like '%E%')
    const conditions = arr
      .map((e) => `(first_name like '%${e}%' or  last_name like '%${e}%')`)
      .join(` AND `)
    return `use SNOW select distinct sys_id, name from dbo.sys_user where ${conditions}`
  }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74121458

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档