Показать полную графическую версию : кодировка названия столбца
Доброго времени суток!
Решил я разобраться в Оракл и появилась проблема.
Задача: вывести запросом строку и назвать столбец столбец на кириллице. название содержит 28 символов.
select 'Hi world' as ОченьДинноеНазваниеСтолбца from dual;
появляется ошибка ORA-00972: identifier is too long
Сложность в том, что название столбца имеет тип varchar2(30). Кодировка по умолчанию (как я понимаю) utf8. таким образом английскими символами максимальная длина названия столбца 30 символов. А русскими - всего 15.
convert('ОченьДинноеНазваниеСтолбца','UTF8','CL8KOI8R') - вернет строку, а не идентификатор и появится ошибка
select'Hi world' as convert('ОченьДинноеНазваниеСтолбца','UTF8','CL8KOI8R') from dual;
ORA-00923: FROM keyword not found where expected
Возможно ли изменить кодировку идентификатора прямо в запросе с utf8 на koi8r?
Как вообще можно выполнить задачу?
Arenear, Вопрос "нафига"?
Еще более прозрачно - зачем мешать кириллицу и латиницу в запросе?
select 'Hi world' as ОченьДинноеНазваниеСтолбца from dual; »
Вернет столбец 'Hi World' у вас есть такой столбец?
P.S. Если вы решили разобраться с Ораклом, так и разбирайтесь родным и правильным инструментарием (как он там назывался, я забыл).
Зачем вы изобретаете велосипед, который вероятно методами Оракла не решается, а решается бизнес-приложением?
lxa85, разбираюсь с Ораклом. Записался на курсы. Преподаватель дал задание. Найти готовое решение в интернете не могу. Поэтому пишу здесь, может кто подскажет как это сделать.
Arenear, приведите полное и не искаженное задание.
Структуру таблицы, и ее данные.
oracle sql developer
в помощь
Так же покажите настройки базы данных (свойства).
lxa85,
Создать таблицу “Clients”, содержащую столбцы “client_id (integer, not null)” и “client_name (varchar2(50) , not null)”. Заполнить её произвольными данными (10-20 записей).
Создать таблицу “Phones”, содержащую столбцы “client_id (integer, not null)”, “phone_number (integer, not null)”, “active_from (date, not null)” , “active_to (date)”. Заполнить её произвольными данными (10-20 записей).
Создать таблицу “Mobiles”, содержащую столбцы “client_id (integer, not null)”, “mobile_number (integer, not null)”, “active_from (date, not null)” , “active_to (date)”. Заполнить её произвольными данными (10-20 записей).
Создать таблицу “Emails”, содержащую столбцы “client_id (integer, not null)”, “email (varchar2(50), not null)”. Заполнить её произвольными данными (10-20 записей).
Поле “active_to (date)” может принимать значение null.
В таблицах “Phones”, “Mobiles” и “Emails” поле client_id является FK из “Clients”.
Используя SET операторы:
Вывести имя клиента и все контактные данные клиента в формате:
“ФИО” “Название контактного данного” “Его значение” “Дата с” “Дата до”
“Иванов И.И.” “Мобильный” “89082222222” “01.01.2015” “null”
“Иванов И.И.” “email” “ivanov.ii@mail.ru” “null” “null”
Вывести всех клиентов (только ФИО), у которых есть домашний номер (“Phones”), но нет мобильного (“Mobiles”) и нет email’a (“Emails”).
Вывести всех клиентов (в порядке убывания), у которых есть домашний номер (“Phones”) и мобильный (“Mobiles”), но email’a (“Emails”).
lxa85, единственная проблема - это столбец с названием "Название контактного данного"
lxa85, использую Oracle Database 11g Express Edition, IDE Toad
Arenear, попробуйте двойные кавычки, и почитать тут (http://www.sql.ru/forum/226469/russkie-nazvaniya-poley-vo-view), тут (http://stackoverflow.com/questions/17944104/change-column-name-in-oracle-in-select-statement) и тут (https://docs.oracle.com/database/121/SQLRF/sql_elements006.htm#SQLRF51101)
Oracle Express мне загрузить не удалось, попробую позже.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.