Oracle
 sql >> Database >  >> RDS >> Oracle

Come inserire una stringa che contiene un &

Continuo a dimenticarlo e a tornarci di nuovo! Penso che la risposta migliore sia una combinazione delle risposte fornite finora.

In primo luogo, &è il prefisso della variabile in sqlplus/sqldeveloper, da qui il problema:quando appare, dovrebbe far parte del nome di una variabile.

SET DEFINE OFF interromperà l'interpretazione di sqlplus e in questo modo.

Ma cosa succede se è necessario utilizzare le variabili sqlplus e letterale e caratteri?

  • Hai bisogno di SET DEFINE ON per far funzionare le variabili
  • E IMPOSTA ESCAPE ON per sfuggire agli usi di &.

es.

set define on
set escape on

define myvar=/forth

select 'back\\ \& &myvar' as swing from dual;

Produce:

old   1: select 'back\\ \& &myvar' from dual
new   1: select 'back\ & /forth' from dual

SWING
--------------
back\ & /forth

Se vuoi usare un carattere di escape diverso:

set define on
set escape '#'

define myvar=/forth

select 'back\ #& &myvar' as swing from dual;

Quando si imposta un carattere di escape specifico, è possibile che venga visualizzato "SP2-0272:il carattere di escape non può essere alfanumerico o vuoto". Questo probabilmente significa che hai già definito il carattere di fuga e le cose diventano orribilmente autoreferenziali. Il modo più semplice per evitare questo problema è avviare prima la fuga:

set escape off
set escape '#'