搜索谓词在sqlite中搜索名字和姓氏?

时间:2012-12-06 09:57:39

标签: sql sqlite search predicate

想象一下以下联系方式:

{
  first_name:"Walter",
  last_name:"White"
}

我希望以下搜索字符串返回该联系人:

  • Walter White
  • White Walter

但是,上述搜索字符串不应返回以下联系人:

{
  first_name:"Skylar",
  last_name:"White"
}

{
  first_name:"Walter",
  last_name:"Grey"
}

我正在尝试通过编写一个sqlite谓词来实现这一点。

我认为这一定是一个非常普遍的问题,但我没有在这里找到一个可以解答这个问题的问题。

3 个答案:

答案 0 :(得分:1)

SELECT *
FROM MyTable
WHERE first_name || ' ' || last_name = ?
   OR last_name || ' ' || first_name = ?

答案 1 :(得分:0)

根据CL答案中的评论工作: 你在谈论做部分比赛。例如Mich回归Michael,Walt回归Walter,Mary回归Mary Sue等。

修改

使用一点反向LIKE技巧和一些输入填充,你得到这个:

SELECT *
FROM People_Table
WHERE first_name || ' ' last_name LIKE '%' || (SELECT replace(inputString, ' ', '%')) || '%'
   OR last_name || ' ' first_name LIKE '%' || (SELECT replace(inputString, ' ', '%')) || '%'

对于像“Mary Sue Jones”这样的双重名字,以下内容全部匹配: “Mary Jones”,“Jones”,“Sue Jones”,“Jones Sue”,“Sue Mary”,“Mary Sue Jones”等。 这种方法的缺点是,如果双重名称的部分在搜索字符串中出现故障,则它将不匹配。你必须超出这个SQLite谓词才能解决这个问题。

答案 2 :(得分:0)

First Separate&然后搜索FirstName = firstname和LastName = lastname然后反转以防万一用户首先键入姓氏

this

FIRST_NAME LIKE'%" + firstName +"%' AND LAST_NAME喜欢'%" + lastName +"%'或FIRST_NAME喜欢'%" + lastName +"%' AND LAST_NAME喜欢'%" + firstName +"%'