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

标签 c# sqlite

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

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



当我按如下方式键入输入字符串(仅是粗体字符串)时,返回的结果必须具有记录:

**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/

相关文章:

c# - .NET TimeZone.CurrentTimeZone.GetDaylightChanges 返回错误的 2005 夏令时

c# - 如何在 ASP.NET 中尝试 3 次无效密码后阻止用户名

c# - Vector256.Create 和 Avx2.BroadcastScalarToVector 函数之间有什么区别?

c# - LINQ to SQL 其中集合包含集合

c# - 在 .NET 中序列化高度链接的数据(自定义 JSON.NET 引用)

sqlite - Servicestack-在SQLite32数据库上按日期查询OrmLite不会返回任何结果

android - 将 SQLite 持久化到 Android 应用程序中

sqlite - 有没有办法使用 FireDAC 插入 Null 值作为参数?

java - Android 上的 SQLite 错误

iphone - ARC 中的内存问题