如何查询每个字符的首字母?

时间:2014-07-23 04:31:31

标签: c# sqlite

我有一个包含三列的表:firstname,middlename,lastname。现在,当我键入每个字符的第一个字母时,查询必须正确返回结果。

示例:我的数据库有一条记录:

enter image description here

当我输入如下输入字符串(只是粗体字符串)时,返回的结果必须包含记录:

**n** or
**n k** or
**n p** or
**k p** or
**n k p**

我使用SQLite,而在目前我并不知道。 你能给我一个关于这个的建议吗?

1 个答案:

答案 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. 为每个名称输入字母,即姓氏,名字和中间名(如果需要)的字母
  2. 只需输入一个字母(或当然是字符串),然后从firstname,lastname和middlename中搜索。
  3. 对于选项编号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%'
    

    换句话说,控制用户的输入方式并给予他/她很小的空间,以免出现混淆。