Форум программистов, компьютерный форум, киберфорум
Oracle
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/98: Рейтинг темы: голосов - 98, средняя оценка - 4.64
1 / 1 / 1
Регистрация: 21.08.2010
Сообщений: 5
1

Способы ввода строки с апострофом

11.12.2010, 14:43. Показов 19485. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
День добрый.
Пока я нашёл ровно один способ ввести в запрос строку, содержащую апостроф:

1. SET SCAN OFF
2. Удвоить апостроф в запросе: INSERT INTO mytable VALUES ('Фамилия О''Рейли популярна в Ирландии', 3)
3. SET SCAN ON

А менее черезжопные способы есть? Без SET SCAN? Экранировать апостроф как-нибудь, например?

СУБД Oracle 10g
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.12.2010, 14:43
Ответы с готовыми решениями:

Передача строки с апострофом скрипту
В ASP коде на кнопку вешаеться javacsript функция, которой в качестве параматра передаёться строка...

Способы ввода данных
Заранее всем, кто откликнулся , спасибо! Такая проблемка: как ещё дать понять моей...

Различные способы ввода текста
Добрый день, хочу поинтересоваться как более грамотно выводить текст: Вариант №1. #include...

Способы ввода и вывода массива
Уважаемые Форумчане, прошу вашей помощи покажите способы ввода и ввода массива

6
68 / 66 / 3
Регистрация: 23.08.2010
Сообщений: 195
11.12.2010, 20:17 2
Цитата Сообщение от Уруру Посмотреть сообщение
День добрый.
Пока я нашёл ровно один способ ввести в запрос строку, содержащую апостроф:

1. SET SCAN OFF
2. Удвоить апостроф в запросе: INSERT INTO mytable VALUES ('Фамилия О''Рейли популярна в Ирландии', 3)
3. SET SCAN ON

А менее черезжопные способы есть? Без SET SCAN? Экранировать апостроф как-нибудь, например?

СУБД Oracle 10g
Странно, просто
Oracle 11 SQL
1
INSERT INTO mytable VALUES ('Фамилия О''Рейли популярна в Ирландии', 3)
Без SET SCAN, не работает?
1
648 / 77 / 0
Регистрация: 23.01.2010
Сообщений: 193
11.12.2010, 22:39 3
Можно, например, так:
SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
SQL> CREATE TABLE t (f varchar2(255));
 
TABLE created.
 
SQL> INSERT INTO t VALUES(q'(Test string with ' symbol)');
 
1 row created.
 
SQL> insert into t values(q'<Another test string WITH ' symbol>');
 
1 ROW created.
 
SQL> INSERT INTO t VALUES(q'{Yet another test string with ' symbol}');
 
1 row created.
 
SQL> insert into t values(q'[LAST test string WITH ' symbol]');
 
1 ROW created.
 
SQL> SELECT * FROM t;
 
F
--------------------------------------------------------------------------------
Test string WITH ' symbol
Another test string with ' symbol
Yet another test string WITH ' symbol
Last test string with ' symbol
 
SQL> DROP TABLE t;
 
TABLE dropped.
Подсветке синтаксиса слегка сорвало крышу, поэтому регистр местами попортился, я всё в нижнем регистре писал.
1
Z1000000
12.01.2011, 17:49 4
Пробую то, что написал dlinnbly.
И отсюда примеры: http://www.csa.ru/~toluol/oradev05.htm

вроде:
Код
select q'*Quoters exa'mple string*' str from dual
Ругается ORA-01756 Нет завершающей кавычки.
Использую oracle 10g

Может опцию какую надо включить?
648 / 77 / 0
Регистрация: 23.01.2010
Сообщений: 193
12.01.2011, 18:43 5
По идее должна работать изначально.

Oracle 11 SQL
1
2
3
4
5
6
7
8
9
10
11
Connected TO:
Oracle DATABASE 10g Enterprise Edition RELEASE 10.2.0.5.0 - 64bit Production
WITH the Partitioning, OLAP, Data Mining AND REAL Application Testing options
 
tia@TIADEV>SELECT q'*Quoters exa'mple string*' str from dual;
 
STR
-----------------------
Quoters exa'mple string
 
tia@TIADEV>
Может это проблемма с приложением через которое выполняете запрос?
В SQL*Plus воспроизводится?
0
Z1000000
13.01.2011, 11:17 6
dlinnbly, спасибо за ответ.

Проблема оказалась в другом:
Использовался клиент 8.06.
Он некорректно воспринимает строки с 'q'.
Если число апострофов не парное. Выдает ошибку.
А если парное отрабатывает корректно
105 / 75 / 0
Регистрация: 29.06.2009
Сообщений: 328
13.01.2011, 12:27 7
Цитата Сообщение от dlinnbly Посмотреть сообщение
Можно, например, так:
[SQL]
SQL> insert into t values(q'(Test string with ' symbol)');

[SQL]
C q - это прикольно, хотя ни разу не пользовался. Обычно, дважды ставлю апостроф, а set использую для ввода амперсанда.
0
13.01.2011, 12:27
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.01.2011, 12:27
Помогаю со студенческими работами здесь

Способы считывания строк из стандартного потока ввода
Добрый день. Предложите, пожалуйста, какие-нибудь более красивые способы считывания строк....

Задача способы ввода одномерных массивов с компонентами: TEdit, TMemo
Здравствуйте. СПасибо за те решения. Помоги и с этой задачей. Вообще не получается. Дан массив из N...

Назвать с апострофом
Здравствуйте. При использовании функции rename апостроф в новом названии заменяется на html...

Текстовая переменная с апострофом
Ребят Добрый день Помогите с SQL для Access нужно программно ввести в поле таблицы текстовую...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru