Maison  >  Article  >  base de données  >  Quel est le caractère d'échappement dans Oracle

Quel est le caractère d'échappement dans Oracle

WBOY
WBOYoriginal
2022-01-25 14:12:487504parcourir

Caractères d'échappement dans Oracle : 1. Guillemets simples, utilisés pour citer des chaînes ou s'échapper ; 2. Guillemets doubles, utilisés pour envelopper des caractères de format illégal ; 3. "&" est le symbole et, utilisé pour connecter deux échappements eux-mêmes ; . Escape, utilisé pour spécifier un symbole non spécial comme caractère d'échappement.

Quel est le caractère d'échappement dans Oracle

L'environnement d'exploitation de ce tutoriel : système Windows 10, version Oracle 11g, ordinateur Dell G3.

Quels sont les caractères d'échappement d'Oracle

1. Échappement de caractère spécial Oracle

Mots clés : échappement oracle Exécuter en sql :

update userinfo set pageurl='myjsp?page=1&pagesize=10' where id='test'

Cette instruction SQL va à l'URL de la page de la base de données. Une adresse URL est saisie dans le champ, mais l'exécution n'est pas si idéale car il y a un caractère spécial d'Oracle qui doit être échappé, c'est le caractère '&'

Comment gérer les caractères spéciaux dans l'exemple ci-dessus ?

Deux méthodes :

1) mettre à jour les informations utilisateur setpageurl='myjsp?page=1'||'&'||'pagesize=10' où id='test'

2) mettre à jour les informations utilisateur setpageurl='myjsp page ? =1'||chr(38)||'pagesize=10' où id='test'

où || est un trait d'union, chr(38) est cohérent avec le transcodage des caractères ASCII.

Dans plsql, vous pouvez également désactiver la définition pour désactiver les caractères spéciaux, et vous pouvez également utiliser show definition pour afficher certains caractères spécialement définis.

2. Comment échapper aux caractères spéciaux dans Oracle

Q : Comment échapper au soulignement_

select * from ng_values where name like 'lady_%'

jieguo Le résultat montre lady_test, lady_test, lady1

Le résultat correct devrait être : lady_test, lady_test

excluant lady1

S'il vous plaît tout le monde Donnez la méthode d'échappement, 3ks

réponse :

select ... from ... where ... like '/_%' escape '/';

3,

insert into t(col) values(chr(ascii('&'))) ;

(Méthode 1)

Exemple : insérer des caractères spéciaux '&'

SQL> SHOW DEFINE
define "&" (hex 26) ? <--- DEFINE的default值是 ‘&’
SQL> SET DEFINE OFF
SQL> SHOW DEFINE
define OFF
SQL> INSERT INTO <table_name> VALUES (&#39;AT&T&#39;);

/

1 ligne créée

(Méthode 2)

dd Non un caractère d'échappement, afin qu'il puisse être stocké directement sans s'échapper.

Les caractères d'échappement Oracle sont :

1, guillemets simples

Les guillemets simples ont deux fonctions dans ORACLE : 1) Les caractères d'échappement ;

Lorsque vous citez une chaîne, les guillemets simples apparaissent par paires ; et s'échapper doit être un nombre pair, donc dans une instruction SQL, les guillemets simples doivent être par paires.

SQL> SHOW ESCAPE
escape OFF <--- ESCAPE的default值是 OFF
SQL> SET ESCAPE ON
SQL> SHOW ESCAPE
escape "\" (hex 5c)
SQL> INSERT INTO temp_table VALUES (&#39;select * from emp where ename =\&1&#39;);

Les chaînes échappées complexes peuvent être divisées par. le symbole de connexion || pour une compréhension facile. Les guillemets simples autour du symbole de connexion '||' n'ont aucune relation sauf si '||' fait partie de la chaîne (ce qui est très courant dans le SQL dynamique

SELECT &#39;myjsp?page=1&pagesize=10&#39; FROM dual;
SELECT &#39;myjsp?page=1&pagesize=10&#39; FROM dual;
SQL>   create   table   a  (b   varchar2(10));  
Table   created  
SQL>   insert   into   a  values(&#39;_a&#39;);

2, guillemets doubles).

1) De manière générale, les guillemets doubles dans les chaînes ne sont traités que comme des caractères ordinaires.

Pour le moment, les guillemets doubles ne sont pas requis. Apparaissent par paires :

SQL>   select   B   from  A   where   instr(b,&#39;_a&#39;)>0;  
B  
----------  
_a  
select   B   from   A  where   b   like   &#39;%\_a%&#39;  escape   &#39;\&#39;
2) Lorsqu'ils apparaissent dans la chaîne de format de to_char, les guillemets doubles. avoir une fonction spéciale, qui consiste à envelopper les caractères de format illégaux pour éviter l'erreur ORA-01821 : format de date non reconnu

En d'autres termes, après avoir supprimé les guillemets doubles et les caractères qu'ils contiennent, ce qui reste devrait être une chaîne de format légal. to_char ignorera les guillemets doubles lors du traitement de la chaîne de format :

Sélectionnez To_Char(Sysdate, 'hh24" Hours"mi"minutes"ss"seconds"') comme "Heure actuelle/Heures, minutes et secondes" de Dual ;

Sortie : 09 heures, 05 minutes et 08 secondes - cette application est également disponible sous l'alias

La chaîne de format est 'hh24"hour" mi"minutes"ss"seconds"' ;

Après avoir supprimé les guillemets doubles, ce qui reste est 'hh24miss', qui est une chaîne au format légal Mais même si vous ne connaissez vraiment pas l'utilisation des guillemets doubles, vous pouvez toujours l'utiliser comme ceci. Traitement, bien qu'un peu plus gênant :

. Sélectionnez To_Char(Sysdate, 'hh24') || 'Hour' || To_Char(Sysdate, 'mi') || To_Char(Sysdate, 'ss') ||

Sortie : 09 heures, 05 minutes et 8 secondes

3, & (et symbole)

est utilisé pour identifier/définir des variables personnalisées, suivi du nom de la variable si elle doit être utilisée comme caractère, vous ; besoin d'utiliser Chr(38) ou de connecter deux && (échapper lui-même)

select   B   from   A  where   b   like   &#39;%\_a%&#39;  escape   &#39;\&#39;;
select   B   from   A  where   b   like   &#39;%\_a%&#39;  escape   &#39;\&#39;;

4, Escape (spécifier le caractère d'échappement)

Spécifiez un symbole non spécial comme caractère d'échappement, principalement utilisé dans l'échappement générique

Select &#39;abc&#39; a,&#39;&#39; b, &#39;&#39;&#39;&#39; c, &#39; &#39;&#39; &#39; d From Dual;

Tutoriel recommandé : "

Tutoriel vidéo Oracle

"

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn