Как я могу использовать ESCAPE в SQLite? - PullRequest
3 голосов
/ 11 сентября 2010

пытаюсь ответить и не везет:

Я использую Браузер базы данных SQLite (созданный с использованием 3.3.5 механизма SQLite) для выполнения этого запроса:

SELECT columnX FROM MyTable

WHERE columnX LIKE  '%\%16'  ESCAPE '\'  

В столбце X У меня есть строка с данными: sampledata%167

Я выполняю инструкцию и не получаю никаких данных, но также нет ошибки?

http://www.sqlite.org/lang_expr.html

(SQLite с C API)

Ответы [ 2 ]

6 голосов
/ 11 сентября 2010

Я думаю, проблема в том, что вы пропускаете % в конце шаблона.

'%\%16%'

Кроме того, обратные слеши часто приводят к путанице в различных языках программирования и инструментах, особенно если для обработки запроса в базе данных используется несколько уровней синтаксического анализа. Чтобы упростить вещи, вы можете использовать другой escape-символ:

WHERE columnX LIKE '%!%16%' ESCAPE '!'
1 голос
/ 11 сентября 2010

Ваш пример данных заканчивается на %167, но ваш запрос соответствует только вещам, которые заканчиваются на %16.Возможно, вам придется изменить свой запрос, чтобы иметь конечный % или заканчиваться 167, как ваши данные, в зависимости от ваших потребностей.

Когда я пытаюсь это сделать в SQLite, он работает просто отлично:

sqlite> create table foo (bar text);
sqlite> insert into foo (bar) values ('sampledata%167');
sqlite> select * from foo where bar like '%\%16' escape '\';
sqlite> select * from foo where bar like '%\%167' escape '\';
sampledata%167

Возможно, вы захотите попробовать поэкспериментировать с этим в оболочке SQLite, на простом примере таблицы, как я показываю, чтобы проверить, существует ли там еще ваша проблема.

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