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

Sådan indsætter du en streng, der indeholder et &

Jeg bliver ved med at glemme dette og vender tilbage til det igen! Jeg tror, ​​det bedste svar er en kombination af de svar, der er givet indtil videre.

For det første er &variabelpræfikset i sqlplus/sqldeveloper, deraf problemet - når det vises, forventes det at være en del af et variabelnavn.

SET DEFINE OFF stopper sqlplus-fortolkning og på denne måde.

Men hvad nu hvis du skal bruge sqlplus-variabler og bogstaveligt og tegn?

  • Du skal SET DEFINE ON for at få variabler til at fungere
  • Og INDSTIL ESCAPE TIL for at undgå brug af &.

f.eks.

set define on
set escape on

define myvar=/forth

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

Producerer:

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

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

Hvis du vil bruge et andet escape-tegn:

set define on
set escape '#'

define myvar=/forth

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

Når du angiver et specifikt escape-tegn, kan du se 'SP2-0272:escape-tegn må ikke være alfanumerisk eller mellemrum'. Det betyder sandsynligvis, at du allerede har defineret flugtkarakteren, og tingene bliver forfærdeligt selvrefererende. Den rene måde at undgå dette problem på er at starte escape først:

set escape off
set escape '#'


  1. Fejl ved forsøg på at køre pgAdmin4

  2. Eksisterer / findes ikke:'vælg 1' vs 'vælg felt'

  3. Sådan bruges IF...THEN Logic i SQL Server

  4. Kode til at kalde en funktion i en pakke fra C# og ODP.NET