Sqlite 参数化 模糊查询 解决方案

Posted wanglgkaka

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Sqlite 参数化 模糊查询 解决方案相关的知识,希望对你有一定的参考价值。

转自:https://codedefault.com/2018/does-dapper-support-the-like-operator-in-csharp-application

问题描述

如题,在.NET/C#的程序开发中,使用Dapper查询数据时,如何实现类似SQL查询语句中的like操作,如:

var data = conn.Query(@"
    select top 25 
    Term as Label, 
    Type, 
    ID 
    from SearchTerms 
    WHERE Term like ‘%@T%‘", 
    new { T = (string)term });

以上的语句执行后的结果是错误的,在Dapper中,类似SQL语句中的like应该如何处理呢?

方案一

term = "whateverterm";
var encodeForLike = term => term.Replace("[", "[[]").Replace("%", "[%]");

string term = "%" + encodeForLike(term) + "%";
var data = conn.Query(@"
   select top 25 
  Term as Label, 
  Type, 
  ID 
  from SearchTerms 
  WHERE Term like @term", 
  new { term });

方案二

string query = "SELECT * from country WHERE Name LIKE CONCAT(‘%‘,@name,‘%‘);"
var results = connection.query<country>(query, new {name});

方案三

db.Query<Remitente>("SELECT * 
                     FROM Remitentes 
                     WHERE Nombre LIKE @n", new { n = "%" + nombre + "%" })
                   .ToList();

以上是关于Sqlite 参数化 模糊查询 解决方案的主要内容,如果未能解决你的问题,请参考以下文章

参数化查询模糊查询

java android sqlite参数化查询

在python中使用sqlite3注入安全参数化查询[重复]

IOS开发数据库篇—SQLite模糊查询

sqlite模糊查询

python sqlite3 如何模糊查询变量?