sql >> Database >  >> RDS >> Oracle

Een string invoegen die een &bevat

Ik vergeet dit steeds en kom er weer op terug! Ik denk dat het beste antwoord een combinatie is van de tot nu toe gegeven antwoorden.

Ten eerste, &is de variabele prefix in sqlplus/sqldeveloper, vandaar het probleem - wanneer het verschijnt, wordt verwacht dat het deel uitmaakt van een variabelenaam.

SET DEFINE OFF stopt het interpreteren van sqlplus en op deze manier.

Maar wat als u sqlplus-variabelen en . moet gebruiken? letterlijk en karakters?

  • Je hebt SET DEFINE ON nodig om variabelen te laten werken
  • En STEL ESCAPE IN om te ontsnappen aan het gebruik van &.

bijv.

set define on
set escape on

define myvar=/forth

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

Produceert:

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

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

Als u een ander escape-teken wilt gebruiken:

set define on
set escape '#'

define myvar=/forth

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

Wanneer u een specifiek escape-teken instelt, ziet u mogelijk 'SP2-0272:escape-teken mag niet alfanumeriek of witruimte zijn'. Dit betekent waarschijnlijk dat je het ontsnappingskarakter al hebt gedefinieerd en dat de dingen vreselijk naar jezelf verwijzen. De schone manier om dit probleem te vermijden, is door eerst de ontsnapping uit te schakelen:

set escape off
set escape '#'


  1. Hoe kan ik de oorzaak van de Hibernate-uitzondering verhelpen. IllegalArgumentException is opgetreden tijdens het aanroepen van setter?

  2. Hoe bepaal je programmatisch welke SQL-tabellen een identiteitskolom hebben?

  3. Een tabel maken in SQL Server

  4. Hoe gebruikersrechten in MySQL Workbench te controleren met behulp van de GUI