sql >> Databáze >  >> RDS >> Oracle

Jak vložit řetězec, který obsahuje &

Pořád na to zapomínám a vracím se k tomu znovu! Myslím, že nejlepší odpovědí je kombinace dosud poskytnutých odpovědí.

Za prvé, &je předpona proměnné v sqlplus/sqldeveloper, proto ten problém - když se objeví, očekává se, že bude součástí názvu proměnné.

SET DEFINE OFF zastaví interpretaci sqlplus tímto způsobem.

Ale co když potřebujete použít proměnné sqlplus and doslovné a znaky?

  • Aby proměnné fungovaly, potřebujete SET DEFINE ON
  • A NASTAVTE ESCAPE ZAPNUTO, aby se zabránilo použití &.

např.

set define on
set escape on

define myvar=/forth

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

Vyrábí:

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

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

Pokud chcete použít jiný znak escape:

set define on
set escape '#'

define myvar=/forth

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

Když nastavíte konkrétní znak escape, může se zobrazit 'SP2-0272:znak escape nemůže být alfanumerický nebo prázdný znak'. Pravděpodobně to znamená, že už máte definovanou únikovou postavu a věci se děsně vztahují k sobě samému. Čistým způsobem, jak se tomuto problému vyhnout, je nejprve nastavit únik:

set escape off
set escape '#'


  1. JDBC ResultSet getDate ztrácí přesnost

  2. Jak přidat nebo odstranit sloupec pomocí GUI na SQL Server - SQL Server / Výukový program T-SQL, část 39

  3. Databázová služba PostgreSQL

  4. Přepište Query Optimizer pro vaše spojení T-SQL pomocí FORCEPLAN