Во-первых, я изучал этот связанный стековый пост , но он не смог решить мою проблему.
Когда я запускаю следующий запрос внутри запроса MS Access 365окно, я получаю 97 записей, как и ожидалось:
SELECT *
FROM Prices
WHERE OptionID Like '*_*'
Моя цель состояла в том, чтобы вернуть все записи, в которых OptionID
содержит подчеркивание.Успех.
Когда я запускаю следующий запрос в окне запроса MS Access 365, я получаю 109 967 записей, как и ожидалось:
SELECT *
FROM Prices
Только 97 из моих OptionID имеют подчеркивание, итаким образом, предложение where в первом запросе выше ограничивает набор записей 97 записями, как и ожидалось.
Вот где это становится сложным.
Когда я запускаю этот запрос в моемПриложение C #, подключающееся к Access через OleDb:
SELECT *
FROM Prices
WHERE OptionID Like '*_*'
... Я получаю 0 записей.Причина в том, что Access SQL через OleDb должен использовать %
вместо *
при подстановочных знаках.И тогда я делаю это:
SELECT *
FROM Prices
WHERE OptionID Like '%_%'
... и получаю 109 967 записей.Как будто where clause
был проигнорирован!Я считаю, что происходит то, что OleDb интерпретирует подчеркивание как односимвольный подстановочный знак сам по себе, и поэтому фильтрация не происходит.
И, таким образом, моя проблема в итоге: я не могу понять, как сказать Access (черезOleDb), что Я хочу использовать подчеркивание как литерал , а не подстановочный знак, в окружении %
в запросе подстановочного знака.Как это сделать?(Я попытался выбрать подчеркивание с помощью \
и \\
, но без игры в кости.)