У меня есть запрос, который нужно запустить для SQL, MYSQL, ORACLE, Postgres. Обычно у меня есть список записей, в которых я хочу получить запись, которая соответствует шаблону ввода при поиске.
Например
SELECT * FROM BOOKS WHERE NAME LIKE '%TEST¤_1%' ESCAPE '¤'
(Этот запрос - просто пример того, что я на самом деле пытаюсь выполнить).
Я использовал escape-символ '¤' (код ascii - 164), чтобы избежать подстановочного знака (символа подчеркивания), поэтому, например, если я буду искать 1, я бы заменил символ _ на ¤, чтобы он дал me книги, содержащие только имя 1, а не книги, содержащие символы до 1.
Он отлично работает для mysql, postgres и sql, но в oracle, когда я запускаю вышеуказанный запрос, он выдает следующую ошибку в последней версии oracle.
ORA-01425: escape character must be character string of length 1
01425. 00000 - "escape character must be character string of length 1"
*Cause: Given escape character for LIKE is not a character string of
length 1.
*Action: Change it to a character string of length 1.
Он отлично работает в версии Oracle 11G.
Также NLS_CHARACTERSET для 11G - WE8MSWIN1252, а для последней версии Oracle - AL32UTF8.
При выполнении запроса ниже дает мне длину 1.
SELECT LENGTH('¤') FROM BOOKS
Получим ли мы возможность включить поддержку расширенного кода ascii (код символа 128–255)) при установке оракула или мне нужно использовать какой-либо другой символ для экранирования подстановочного знака (_) Если да, то какой еще символ я могу использовать?