DevArt dotConnect для Oracle - как сделать предложение WHERE LIKE с параметром?

Как мне сделать WHERE COLUMN LIKE '%SearchTerm%' с DevArt dotConnect для библиотек Oracle?

В идеале, используя CommandParameter для SearchTerm?


Я попробовал следующее без радости:

cmd.CommandText =
  "SELECT ID, COLUMN_A, COLUMN_B FROM TABLE_A
   WHERE COLUMN_A LIKE :SearchTerm";


У меня это работает с:

cmd.CommandText =
  "SELECT ID, COLUMN_A, COLUMN_B FROM TABLE_A
   WHERE COLUMN_A LIKE :SearchTerm";

cmd.Parameters.AddWithValue("SearchTerm", "%" + term.Replace('%', ' ') + "%");


Но я не в восторге от термина % признаки - есть ли правильный или лучший способ?

2 ответа

Решение

Попробуйте это решение:

cmd.CommandText =
  "SELECT ID, COLUMN_A, COLUMN_B
   FROM TABLE_A
   WHERE COLUMN_A LIKE '%' || :SearchTerm || '%'";

cmd.Parameters.AddWithValue("SearchTerm", term);

Самому Oracle не нравится "Где столбец LIKE %:searchterm%", поэтому, если вам нужны там символы подстановки, их нужно добавить как часть параметра.

Этого можно избежать, настроив полнотекстовый индекс для столбца, который вы хотите найти, и затем используйте вместо него CONTAINS, который не требует подстановочных знаков. Это также более мощный метод поиска, но его сложнее настроить.

Другие вопросы по тегам