Аварийный символ Oracle pl-sql (для «'»)

21

Когда я пытаюсь выполнить оператор INSERT в oracle, я получил SQL Error: ORA-00917: missing comma , потому что в моем Alex's Tea Factory есть значение как INSERT .

Как я могу избежать ' ?

    
задан Bishan 30.07.2012 в 09:37
источник

5 ответов

34

Чтобы избежать этого, удвойте кавычки:

INSERT INTO TABLE_A VALUES ( 'Alex''s Tea Factory' );
    
ответ дан Codo 30.07.2012 в 09:39
источник
6

В SQL вы избегаете цитаты по другой цитате:

SELECT 'Alex''s Tea Factory' FROM DUAL
    
ответ дан Thilo 30.07.2012 в 09:39
источник
5

вы можете использовать ESCAPE, как приведенный ниже пример

Символ «_» wild card используется для соответствия ровно одному символу, а «%» используется для соответствия нулю или более вхождений любых символов. Эти символы могут быть экранированы в SQL.

SELECT name FROM emp WHERE id LIKE '%/_%' ESCAPE '/';

То же самое работает внутри PL / SQL:

 if( id like '%/_%' ESCAPE '/' )

Это относится только к похожим шаблонам, например, в вставке нет необходимости бегать _ или%, они все равно используются как простые символы. В произвольных строках только «нужно экранировать».

    
ответ дан ganapathydselva 30.07.2012 в 11:05
источник
  • Не могли бы вы показать, как использовать это в случае инструкции INSERT? –  Bob Jarvis 30.07.2012 в 13:10
1

В вашем вопросе подразумевается, что вы создаете инструкцию INSERT, объединяя строки. Я предлагаю, что это плохой выбор, поскольку он оставляет вас открытым для SQL-инъекций, если строки получены из пользовательского ввода. Лучше всего использовать маркеры параметров и привязать значения к маркерам. Если вы ищете Oracle parameter markers , вы, вероятно, найдете некоторую информацию для своей конкретной технологии внедрения (например, C # и ADO, Java и JDBC, Ruby и RubyDBI и т. Д.).

Поделитесь и наслаждайтесь.

    
ответ дан Bob Jarvis 30.07.2012 в 13:16
источник
0
SELECT q'[Alex's Tea Factory]' FROM DUAL
    
ответ дан Siva 25.01.2017 в 05:32
источник
  • отредактируйте ответ и добавьте объяснения. –  Tushar 25.01.2017 в 05:37