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, который не требует подстановочных знаков. Это также более мощный метод поиска, но его сложнее настроить.