我有一个包含三列的表:firstname,middlename,lastname。现在,当我键入每个字符的第一个字母时,查询必须正确返回结果。
示例:我的数据库有一条记录:
当我输入如下输入字符串(只是粗体字符串)时,返回的结果必须包含记录:
**n** or
**n k** or
**n p** or
**k p** or
**n k p**
我使用SQLite,而在目前我并不知道。 你能给我一个关于这个的建议吗?
答案 0 :(得分:2)
您可以使用通配符%
字符来匹配任何字符串/字符和LIKE
语句。
对于以' N'开头的名字例如:
SELECT * FROM yourTable WHERE FirstName LIKE 'N%'
对于名字和姓氏,它将是:
SELECT * FROM yourTable WHERE FirstName LIKE 'N%' or LastName LIKE 'P%'
<强>更新强>:
如果您不确定输入是用于名字,中间名还是姓,那么您可以在多个字段中执行此操作,例如:
SELECT * FROM yourTable
WHERE FirstName LIKE 'N%' or MiddleName LIKE 'N%' or LastName LIKE 'N%'
如果有多个字母(比方说两个字母),那就会变得像以下一样疯狂:
SELECT * FROM yourTable
WHERE FirstName LIKE 'N%' or MiddleName LIKE 'N%' or LastName LIKE 'N%'
or FirstName LIKE 'P%' or MiddleName LIKE 'P%' or LastName LIKE 'P%'
但使用上述解决方案并不好。因此,允许用户使用以下内容会很好:
对于选项编号1 ,您的查询将如下所示:
SELECT * FROM yourTable
WHERE FirstName LIKE 'N%' or MiddleName LIKE 'K%' or LastName LIKE 'P%'
对于选项编号2 ,您的查询将如下所示:
SELECT * FROM yourTable
WHERE FirstName LIKE 'N%' or MiddleName LIKE 'N%' or LastName LIKE 'N%'
或者如果它是一个String,它可能看起来像这样:
SELECT * FROM yourTable
WHERE FirstName LIKE 'Ngu%' or MiddleName LIKE 'Ngu%' or LastName LIKE 'Ngu%'
换句话说,控制用户的输入方式并给予他/她很小的空间,以免出现混淆。