Как использовать WILDCARD с помощью Dapper - PullRequest
1 голос
/ 04 июля 2019

Как я могу использовать подстановочный знак LIKE в Postgre DB с помощью Dapper? У меня есть следующий код:

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

Где searchValue - простая строка. Я пробовал несколько комбинаций, которые я уже нашел:

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 голосов
/ 04 июля 2019

Должно работать следующее:

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;поэтому вам может понадобиться настроить синтаксис;на всякий случай.

Этот вопрос касается чувствительности к регистру postgresql;может быть полезным.

...