DevArt dotConnect для Oracle - как сделать предложение WHERE LIKE с параметром? - PullRequest
0 голосов
/ 23 февраля 2011

Как мне сделать 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 ]

2 голосов
/ 23 февраля 2011

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

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

cmd.Parameters.AddWithValue("SearchTerm", term);
2 голосов
/ 23 февраля 2011

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

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

...