我有一个包含三列的表:名字,中间名,姓氏。现在,当我键入每个字符的第一个字母时,查询必须正确返回结果。
示例:我的数据库有一条记录:
当我按如下方式键入输入字符串(仅是粗体字符串)时,返回的结果必须具有记录:
**n** or
**n k** or
**n p** or
**k p** or
**n k p**
我使用SQLite,目前我还没有任何想法。
你能给我一个建议吗?
最佳答案
您可以使用通配符%
来匹配任何字符串/字符和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%'
或者,如果它是字符串,则可能看起来像这样:
SELECT * FROM yourTable
WHERE FirstName LIKE 'Ngu%' or MiddleName LIKE 'Ngu%' or LastName LIKE 'Ngu%'
换句话说,控制用户的输入方式,并给他/她留出一点可能的错误的空间,更不用说混乱了。
关于c# - 如何查询每个字符的首字母?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24901890/