Получение строковых значений из Oracle - PullRequest
0 голосов
/ 28 марта 2011

У меня была таблица в базе данных Oracle, которая содержит поля id, name.

Это данные:

123, 'Юг'

121, 'Восток'

445, «Африка и мир»

Когда я выбираю строки, используя предложение where, например

выберите * откуда имя = "Африка и мир";

Oracle запрашивает переменную замещения, и записи не возвращаются.

Пожалуйста, скажите мне, чтобы уточнить мой вопрос.

Привет

Ответы [ 3 ]

4 голосов
/ 28 марта 2011

Проблема в том, что & зарезервирован как маркер для привязки переменных. Вам нужно экранировать символ &.

Вы можете убежать от амперсанда,

SET ESCAPE ON;
select * from where name = 'Africa \& World';

или вы можете отключить привязки с помощью

SET DEFINE OFF;
select * from where name = 'Africa & World';
2 голосов
/ 28 марта 2011

С http://www.orafaq.com/wiki/SQL_FAQ

Опция # 1

SET DEFINE ~
SELECT 'Laurel & Hardy' FROM dual;

Опция # 2

SET ESCAPE '\'
SELECT '\&abc' FROM dual;

Опция # 3

SET SCAN OFF
SELECT '&ABC' x FROM dual;

Опция# 4

SELECT 'Laurel ' || '&' || ' Hardy' FROM dual;

Вариант № 5 (использовать механизм цитирования 10g)

SELECT q'{This is Orafaq's 'quoted' text field}' FROM DUAL;
0 голосов
/ 28 марта 2011

Это SQL * Plus.

В приглашении SQL * Plus введите:

SET DEFINE OFF

Тогда попробуйте снова выполнить ваше утверждение.

...