【发布时间】:2014-07-09 14:54:23
【问题描述】:
我有一个 SQLite3 文件,其中包含学生 全名“这意味着它将超过 1 个单词至少 4”和 学生标记“毕业生” .
在 UI 中,当用户开始更改 textField 的值时,UITextField 工作为“search bar”和UITableView 在异步任务中,我根据学生全名从数据库执行 fitch 查询并更新表当数据可用时,每次用户更改 textField 的值时,表格都会更新数据。
问题来了,搜索/查询有很多情况:
1- 用户输入单个单词。// 他在寻找学生有这个名字或者它可能是姓氏。在这种情况下,查询将是:
SELECT grade,name FROM students where name LIKE 'Adam%' OR name LIKE '% Adam' Limit 20 OFFSET 20
2- 用户输入双字。//他通过他/她的名字和姓氏来寻找学生,或者他输入名字和第二个名字。在这种情况下,查询将是:
SELECT grade,name FROM students where name LIKE 'Ahmad Rami%' OR name LIKE 'Ahmad % Rami%' Limit 20 OFFSET 20
3- 在这种情况下,用户继续输入他输入全名的文本没有问题。
问题是在第一种情况下,如果用户开始输入姓氏“单个单词”,第一个查询将执行,但直到他写完姓氏的完整单词后才会出现结果,因为“%”之后没有“%” Adam”,但如果我们在它后面加上“%”,这将返回错误的结果,以防用户指的是第一个 nam。
前:
“亚当·乔恩·迈克·史密斯”
“Jon Adam Maikel Anglo”
“吉姆斯·阿林·拉菲尔·戈登”
如果用户输入 "A" ==result==> Adam.....smith & jon ada.... Anglo // 两者都会出现,因为 first name 的 " Adam”和“Jon”的姓以“A”开头。 但就我而言,只有亚当出现。 如果我们通过在末尾添加“%”来更改查询,并且用户输入“A”===>“Jims”将出现在结果中,我不想要它出现
【问题讨论】:
标签: ios sql objective-c autocomplete sqlite