想象一下以下联系方式:
{
first_name:"Walter",
last_name:"White"
}
我希望以下搜索字符串返回该联系人:
Walter White
White Walter
但是,上述搜索字符串不应返回以下联系人:
{
first_name:"Skylar",
last_name:"White"
}
{
first_name:"Walter",
last_name:"Grey"
}
我正在尝试通过编写一个sqlite谓词来实现这一点。
我认为这一定是一个非常普遍的问题,但我没有在这里找到一个可以解答这个问题的问题。
答案 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 +"%'