powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Текстовые константы в Oracle
15 сообщений из 15, страница 1 из 1
Текстовые константы в Oracle
    #40094142
PSD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не понимаю почему

В запросе
Код: plsql
1.
2.
3.
4.
5.
SELECT 
'Архив' as DataSource, 
EXTRACT (MONTH FROM TO_DATE('19700101','yyyymmdd') + ((T1.ipcPortalCreateDT+10800000)/24/60/60/1000)) AS ipcRatedMonthNU ,
EXTRACT (YEAR FROM TO_DATE('19700101','yyyymmdd') + ((T1.ipcPortalCreateDT+10800000)/24/60/60/1000)) AS ipcRatedYearNU 
from T1



получаю 'Ар' в место 'Архив'

...
Рейтинг: 0 / 0
Текстовые константы в Oracle
    #40094151
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PSD,

я б начал с select dump('Архив') da from dual

+кодировки

.....
stax
...
Рейтинг: 0 / 0
Текстовые константы в Oracle
    #40094158
SQL*Plus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stax
PSD,

я б начал с select dump('Архив') da from dual

+кодировки

.....
stax

А я бы начал с выполнения запроса с помощью стандартной утилиты SQL*Plus.
...
Рейтинг: 0 / 0
Текстовые константы в Oracle
    #40094159
SQL*Plus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PSD,

В тексте пишете запрос один, а на вашей картинке запрос совсем другой.
Пытаетесь так запутать всех, так же, как уже запутали себя?
...
Рейтинг: 0 / 0
Текстовые константы в Oracle
    #40094161
PSD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stax
PSD,

я б начал с select dump('Архив') da from dual

+кодировки

.....
stax



Результат :

Typ=96 Len=10: 208,144,209,128,209,133,208,184,208,178

Если прячу запрос в View

Код: sql
1.
2.
3.
4.
5.
6.
create view v1 as 
SELECT 
'Архив' as DataSource, 
EXTRACT (MONTH FROM TO_DATE('19700101','yyyymmdd') + ((T1.ipcPortalCreateDT+10800000)/24/60/60/1000)) AS ipcRatedMonthNU ,
EXTRACT (YEAR FROM TO_DATE('19700101','yyyymmdd') + ((T1.ipcPortalCreateDT+10800000)/24/60/60/1000)) AS ipcRatedYearNU 
from T1



то

Код: sql
1.
select * from V1





Возвращает все правильно.


Несколько раз сталкивался с это багой, в итоге "обезьяним" методом как то справлялся, но как у меня это получилось так и не понял.

Сейчас опять столкнулся жить не мешает, но хотелось бы понять откуда ноги растут.
...
Рейтинг: 0 / 0
Текстовые константы в Oracle
    #40094166
SQL*Plus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Typ=96 Len=10: 208,144,209,128,209,133,208,184,208,178
5 символов в кодировке базы данных.
Судя по всему кодировка двухбайтная.

Покажите, как это не работает и работает в SQL*Plus.
...
Рейтинг: 0 / 0
Текстовые константы в Oracle
    #40094167
PSD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SQL*Plus
PSD,

В тексте пишете запрос один, а на вашей картинке запрос совсем другой.
Пытаетесь так запутать всех, так же, как уже запутали себя?


Там запрос километровый....
Чтоб вас не смущать:



Я предполагаю что какая то беда видимо с неявным преобразованием типов.

Кстати спасибо за еще одни интересный факт , я не обратил на это внимание , сам запрос и вьеха с ним константу обрезает а вот если 2 запроса или 2 вьюхи объединить через UNION all все начинает работать нормально.
Теперь понимаю каким образом устранилась ошибка в прошлые разы.
...
Рейтинг: 0 / 0
Текстовые константы в Oracle
    #40094169
SQL*Plus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PSD
SQL*Plus
PSD,

В тексте пишете запрос один, а на вашей картинке запрос совсем другой.
Пытаетесь так запутать всех, так же, как уже запутали себя?


Там запрос километровый....
Чтоб вас не смущать:



Я предполагаю что какая то беда видимо с неявным преобразованием типов.

Кстати спасибо за еще одни интересный факт , я не обратил на это внимание , сам запрос и вьеха с ним константу обрезает а вот если 2 запроса или 2 вьюхи объединить через UNION all все начинает работать нормально.
Теперь понимаю каким образом устранилась ошибка в прошлые разы.



img= http://ар1.jpg
Вы думаете, что такую картинку кто-то, кроме вас, сможет увидеть?

Покажите, как это не работает и работает в SQL*Plus.

Или ничего тут не пишите, а просто продолжайте внутри себя беседу самого-1 с собой-2 раз уж вас там внутри несколько. :-)
...
Рейтинг: 0 / 0
Текстовые константы в Oracle
    #40094182
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
PSD,

Что за клиент вы используете?
...
Рейтинг: 0 / 0
Текстовые константы в Oracle
    #40094248
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PSD


Результат :

Typ=96 Len=10: 208,144,209,128,209,133,208,184,208,178

Если прячу запрос в View



5 символов - 10 байт

возможно интерфейс вместо 10байт, берет 5

попробовать явно привести к типу
select cast('Архів' as varchar2(xx)) ...

.....
stax
...
Рейтинг: 0 / 0
Текстовые константы в Oracle
    #40094262
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PSD,

Как уже сказали - проверьте в sqlplus. Судя по вашим комиксам и описанию, ваш клиент не понимает разницу между 5 char и 5 byte. Union all скорее всего приводит к неявному преобразованию в однобайтную кодировку, поэтому даёт "исправление".
...
Рейтинг: 0 / 0
Текстовые константы в Oracle
    #40094271
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
env
Union all скорее всего приводит к неявному преобразованию в однобайтную кодировку
Это что-то новое.
...
Рейтинг: 0 / 0
Текстовые константы в Oracle
    #40094307
Фотография orawish
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrey_anonymous
env
Union all скорее всего приводит к неявному преобразованию в однобайтную кодировку
Это что-то новое.

А у меня тема вызвала диаметральное вашему впечатление. - всё те же грабли старые
полез искать по теме ссылки, но быстро не нашел.. и плюнул.. ,но (типа) оно таки было замечено и раньше
и (насколько помню) эффект пропадал при замене union на union all
...
Рейтинг: 0 / 0
Текстовые константы в Oracle
    #40094318
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
orawish
andrey_anonymous
пропущено...
Это что-то новое.

А у меня тема вызвала диаметральное вашему впечатление. - всё те же грабли старые

Грабли, может, и старые, но union никогда не занимался преобразованием кодировок (кроме случая, когда соединяет в один набор типы *char* и N*char* - тогда приводит, конечно, к типу итогового dataset, выведенному из самой первой части запроса ( TO_SINGLE_BYTE , TO_MULTI_BYTE ).
И да, выведенный из первого запроса тип может не уместить данные из последующих частей - в этой ситуации помогает явная декларация желаемого типа в первом запросе посредством cast:
Код: plsql
1.
2.
3.
4.
select cast(f1_from_dataset1 as varchar2(100)) f,  cast(f2_from_dataset1 as Nvarchar2(100))...
union
select f1_from_dataset2 , f2_from_dataset2 -- будут неявно приводиться к типу, заказанному в первом dataset
...


А вот преобразованием кодировок традиционно занимается клиент.
...
Рейтинг: 0 / 0
Текстовые константы в Oracle
    #40094367
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И вообще не очень понятно, что во что можно преобразовывать. Если varchar2, так он в любом случае должен быть varchar2 в кодировке базы.

возможно интерфейс вместо 10байт, берет 5
У меня такое же первое впечатление было.
На похожий эффект нарывался в Oracle Reports на коротких полях (UOM в OeBS)

Но автор что-то темнит и, как уже было сказано, вводить в заблуждение и себя и форум.
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Текстовые константы в Oracle
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]