Oracle
 sql >> Datenbank >  >> RDS >> Oracle

So fügen Sie eine Zeichenfolge ein, die ein &enthält

Ich vergesse das immer wieder und komme immer wieder darauf zurück! Ich denke, die beste Antwort ist eine Kombination der bisher gegebenen Antworten.

Erstens ist &das Variablenpräfix in sqlplus/sqldeveloper, daher das Problem - wenn es erscheint, wird erwartet, dass es Teil eines Variablennamens ist.

SET DEFINE OFF stoppt die Interpretation von &auf diese Weise durch sqlplus.

Aber was ist, wenn Sie die sqlplus-Variablen und verwenden müssen wörtlich &zeichen?

  • Du brauchst SET DEFINE ON, damit Variablen funktionieren
  • Und SET ESCAPE ON, um die Verwendung von &zu umgehen.

zB

set define on
set escape on

define myvar=/forth

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

Erzeugt:

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

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

Wenn Sie ein anderes Fluchtzeichen verwenden möchten:

set define on
set escape '#'

define myvar=/forth

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

Wenn Sie ein bestimmtes Escape-Zeichen festlegen, wird möglicherweise „SP2-0272:Escape-Zeichen darf kein alphanumerisches Zeichen oder Leerzeichen sein“ angezeigt. Das bedeutet wahrscheinlich, dass Sie das Escape-Zeichen bereits definiert haben und die Dinge schrecklich selbstreferenziell werden. Der saubere Weg, dieses Problem zu vermeiden, besteht darin, zuerst Escape zu aktivieren:

set escape off
set escape '#'