39 votes

Caractère d'échappement Oracle PL-SQL (pour un " ' ")

Lorsque j'essaie d'exécuter l'instruction INSERT dans Oracle, j'obtiens une erreur SQL Error: ORA-00917: missing comma car il y a une valeur comme Usine de thé d'Alex dans mon instruction INSERT.

Comment puis-je échapper à ' ?

68voto

Codo Points 28685

Pour l'éviter, doublez les guillemets:

INSERT INTO TABLE_A VALUES ( 'Alex''s Tea Factory' );

12voto

Thilo Points 108673

En SQL, vous échappez une citation en utilisant une autre citation :

SÉLECTIONNEZ 'L'usine de thé d'Alex' DE DUAL

8voto

ganapathydselva Points 365

Vous pouvez utiliser ESCAPE comme indiqué dans l'exemple ci-dessous

Le caractère joker '_' est utilisé pour correspondre exactement à un caractère, tandis que '%' est utilisé pour correspondre à zéro ou plusieurs occurrences de n'importe quels caractères. Ces caractères peuvent être échappés en SQL.

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

La même chose fonctionne également à l'intérieur de PL/SQL :

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

Ceci s'applique uniquement aux motifs like, par exemple dans une insertion il n'est pas nécessaire d'échapper _ ou %, ils sont utilisés comme des caractères simples de toute façon. Dans les chaînes arbitraires, seul ' doit être échappé par ''.

8voto

Wael Assaf Points 535

Au lieu de vous inquiéter de chaque apostrophe dans votre déclaration. Vous pouvez facilement utiliser la Notation q'.

Exemple

SÉLECTION q'(Alex's Tea Factory)' DE DUAL;

Les composants clés de cette notation sont

  • q' qui indique le début de la notation
  • ( un symbole facultatif indiquant le début de la déclaration à être entièrement échappée.
  • Alex's Tea Factory (qui est la déclaration elle-même)
  • )' Une parenthèse fermante avec une apostrophe indiquant la fin de la notation.

Et ainsi, vous pouvez insérer autant d'apostrophes dans la notation sans vous préoccuper de chacune d'entre elles, elles seront toutes traitées en toute sécurité.

NOTE IMPORTANTE

Étant donné que vous avez utilisé ( vous devez le fermer avec )', et rappelez-vous qu'il est facultatif d'utiliser tout autre symbole, par exemple, le code suivant s'exécutera exactement comme le précédent

SÉLECTION q'[Alex's Tea Factory]' DE DUAL;

6voto

Siva Points 61
SÉLECTIONNER q'[Fabrique de thé d'Alex]' DE DUAL

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X