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 ?
5 réponses
Pour s'en échapper, le double de la cite:
INSERT INTO TABLE_A VALUES ( 'Alex''s Tea Factory' );
En SQL, vous échapper un devis par une autre citation:
SELECT 'Alex''s Tea Factory' FROM DUAL
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é ".
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.