Как обрабатывать специальные символы в строках запроса? - PullRequest
1 голос
/ 21 июля 2011

Я пишу запрос как

select * from fact_table where name = 'R&D'

select * from fact_table where name = 'John's'

Я использую базу данных Oracle 11g.Есть ли какая-либо универсальная функция или стиль запроса, в котором я могу обрабатывать специальные символы, такие как '&' и '' 'в моем запросе.

Я не хочу обрабатывать каждый случай отдельно, я хочу универсальный механизм.

Если это повторяющаяся запись, пожалуйста, укажите мне исходную запись

Ответы [ 2 ]

1 голос
/ 21 июля 2011

Амперсанд должен работать нормально. Некоторые инструменты, такие как SQLPlus или SQLDeveloper, используют этот символ для указания переменной связывания. Отключите эту «функцию» следующим образом: установить определить выкл включите его так: установить определение на

одиночная цитата требует особого внимания. Используйте два символа одинарных кавычек, чтобы указать базе данных рассматривать ее как литерал, например так: выберите * из таблицы фактов, где name = 'John''s'

0 голосов
/ 22 июля 2011

Использование оператора цитирования

select * from fact_table where name = q'#John's#'

Для амперсандов это проблема для таких инструментов, как SQL * Plus

set define ~
select * from fact_table where name = 'R&D'

Но в блоке pl / sql, кажется, работает нормально:

declare
    output VARCHAR2(10);
BEGIN
    SELECT name 
     INTO output
     FROM fact_table 
    WHERE name = '&1'; 

   DBMS_OUTPUT.put_line('Output: ' || output);
END;
/

SQL> @test.sql;
Enter value for 1: R&D
old   7:         WHERE name = '&1';
new   7:         WHERE name = 'R&D';
Output: R&D

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