Oracle
 sql >> база данни >  >> RDS >> Oracle

Как да вмъкнете низ, който съдържа &

Все забравям това и се връщам към него отново! Мисля, че най-добрият отговор е комбинация от предоставените досега отговори.

Първо, &е префиксът на променливата в sqlplus/sqldeveloper, оттук и проблемът – когато се появи, се очаква да бъде част от името на променлива.

SET DEFINE OFF ще спре интерпретацията на sqlplus и по този начин.

Но какво ще стане, ако трябва да използвате sqlplus променливи и буквално и знаци?

  • Трябва да ЗАДАДЕТЕ DEFINE ON, за да накарате променливите да работят
  • И ЗАДАДЕТЕ ESCAPE ON, за да избегнете употребата на &.

напр.

set define on
set escape on

define myvar=/forth

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

Произвежда:

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

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

Ако искате да използвате различен екраниращ знак:

set define on
set escape '#'

define myvar=/forth

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

Когато зададете конкретен escape-символ, може да видите „SP2-0272:escape-символът не може да бъде буквено-цифров или празен интервал“. Това вероятно означава, че вече имате дефиниран escape символ и нещата стават ужасно самореферентни. Чистият начин да избегнете този проблем е първо да зададете escape:

set escape off
set escape '#'


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. NLS_LOWER() Функция в Oracle

  2. INSERT и UPDATE запис с помощта на курсори в oracle

  3. Как да вмъкнете дълъг низ в CLOB тип данни в Oracle

  4. Как правилно да настроите променливата ORACLE_HOME на Ubuntu 9.x?

  5. oracle systimestamp (sysdate) в милисекунди