如何使用Dapper使用WILDCARD

时间:2019-07-04 13:40:59

标签: c# postgresql dapper

如何使用Dapper在postgre DB中使用LIKE通配符? 我有以下代码:

string query = "SELECT name, index FROM article WHERE prefiks LIKE :prefix ;";
return conn.Query<myModel>(query , new { prefix = searchingValue }).ToArray();

其中searchingValue是一个简单字符串。我尝试了几种已经发现的组合:

return conn.Query<myModel>(query , new { prefix = "%" + searchingValue + "%" }).ToArray();

string query = "SELECT name, index FROM article WHERE prefix LIKE '%' || :prefix || '%'"
return conn.Query<myModel>(query , new { prefix = searchingValue }).ToArray();

但是没有任何效果。我想上述解决方案适用于MS SQL,但在postgre下不起作用;

1 个答案:

答案 0 :(得分:0)

以下应该有效:

string query = "SELECT name, index FROM article WHERE prefiks LIKE :prefix ;";
searchingValue = "%" + searchingValue + "%";
return conn.Query<myModel>(query , new { prefix = searchingValue }).ToArray();

或者简单地,将连接合并为一行:

return conn.Query<myModel>(query , new { prefix = "%" + searchingValue + "%" }).ToArray();

或者,您可以在SQL本身中使用字符串连接:

string query = "SELECT name, index FROM article WHERE prefiks LIKE CONCAT('%', :prefix, '%') ;";
return conn.Query<myModel>(query , new { prefix = searchingValue }).ToArray();

注意:我不是postgresql专家;因此您可能需要调整一些语法;以防万一。

This问题讨论了有关postgresql区分大小写的问题;可能会有所帮助。