c# - 如何使用 Dapper 使用 WILDCARD

标签 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;

最佳答案

以下应该有效:

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 的大小写敏感性;可能会有帮助。

关于c# - 如何使用 Dapper 使用 WILDCARD,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56889262/

相关文章:

sql - Postgres 中的代数数据类型

c# - 为什么在不使用 async/await 的情况下使用 Dapper QueryAsync<T> 时抛出 TaskCanceledException?

c# - HtmlAgilityPack - 删除集合中的所有节点

c# - 缺少 Microsoft.WindowsAzure.Diagnostics 程序集

c# - Decimal.Parse 抛出 FormatException

c# - Dapper ORM - 插入具有现有 ID 的对象

c# - Dapper NullReferenceException

c# - 如何为所有子控件启用拖放

sql - PostgreSQL 按特殊字符排序

java - 使用 java 代码列出特定 PostgreSQL 数据库中的所有表