Oracle pl-sql caractère d'échappement (pour un " ' ")

Lorsque j'essaie d'exécuter INSERT déclaration dans oracle, j'ai eu SQL Error: ORA-00917: missing comma erreur car il y a une valeur comme Alex's Tea Factory dans mon INSERT déclaration.

Comment pourrais-je échapper <!--4 ?

22
demandé sur Bishan 2012-07-30 11:37:13

5 réponses

Pour s'en échapper, le double de la cite:

INSERT INTO TABLE_A VALUES ( 'Alex''s Tea Factory' );
35
répondu Codo 2012-07-30 07:39:17

En SQL, vous échapper un devis par une autre citation:

SELECT 'Alex''s Tea Factory' FROM DUAL
6
répondu Thilo 2012-07-30 07:39:03

vous pouvez utiliser ESCAPE comme exemple donné ci-dessous

le caractère wild card de ' _ 'est utilisé pour correspondre exactement à un caractère, tandis que' % ' est utilisé pour correspondre à zéro ou plus d'occurrences de n'importe quel caractère. Ces caractères peuvent être échappés en SQL.

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

sur Le même travaille à l'intérieur de PL/SQL:

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

ceci s'applique uniquement aux motifs similaires, par exemple dans un insert il n'y a pas besoin d'échapper à _ ou %, ils sont de toute façon utilisés comme des caractères simples. Uniquement dans les chaînes arbitraires "échappé ".

5
répondu ganapathydselva 2015-06-26 11:31:36

votre question implique que vous construisez la déclaration INSERT en concaténant les chaînes ensemble. Je suggère qu'il s'agit d'un mauvais choix car il vous laisse ouvert aux attaques par injection SQL si les chaînes sont dérivées de l'entrée de l'utilisateur. Un meilleur choix est d'utiliser des marqueurs de paramètres et de lier les valeurs à l'marqueurs. Si vous recherchez Oracle parameter markers vous trouverez probablement quelques informations pour votre technologie d'implémentation spécifique (par exemple C# et ADO, Java et JDBC, Ruby et RubyDBI, etc.)

partagez et profitez.

1
répondu Bob Jarvis 2012-07-30 11:16:02
SELECT q'[Alex's Tea Factory]' FROM DUAL
1
répondu Siva 2017-01-25 04:37:06