powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Глюк varchar2 ?
16 сообщений из 16, страница 1 из 1
Глюк varchar2 ?
    #32169744
dsk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
dsk
Гость
Допустим есть таблица, созданная вот так:

create global temporary table XXX
(
F1 VARCHAR2(150)
)
on commit preserve rows;

В таблицу были импортированны некие данные в первом случае через линк с excel, а во втором через линк с MySQL.

После чего, при выполнении вот такого оператора:
select * from xxx group by f1 order by f1;
был получен довольно странный результат, например:
F1
АЛТАЙСКИЙ КРАЙ
АЛТАЙСКИЙ КРАЙ
АМУРСКАЯ ОБЛАСТЬ
АМУРСКАЯ ОБЛАСТЬ

Что это значит? Группировка работает, но работает как то странно:
select count(*),f1 from xxx group by f1 order by f1;
дает
count(*) F1
144 АЛТАЙСКИЙ КРАЙ
77 АЛТАЙСКИЙ КРАЙ
---
Как это понимать, а главное как исправить, обе эти строки выглядят абсолютно одинакого, лишних пробелов в начале и конце нет, но ...
select count(*),length(f1) from xxx group by f1 order by f1; дает:
count(*) length(F1)
144 14
77 150

Вобщем посоветуйте как эти строки к одному виду привести. Что вообще делать, куда копать?
...
Рейтинг: 0 / 0
Глюк varchar2 ?
    #32169757
Vladimir_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
обе эти строки выглядят абсолютно одинакого, лишних пробелов в начале и конце нет
последний запрос как раз и говорит о наличии лишних пробелов
если импорт построчный, то надо использовать ltrim(rtrim())
...
Рейтинг: 0 / 0
Глюк varchar2 ?
    #32169761
Vladimir_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
update XXX set f1=rtrim(f1)
...
Рейтинг: 0 / 0
Глюк varchar2 ?
    #32169776
AI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще надо отключить уникальный ключ, если он есть.
...
Рейтинг: 0 / 0
Глюк varchar2 ?
    #32169793
Фотография Denis Popov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А проверь по коду символов, совпадают ли строки. А то достаточное количество русских/английских букв выглядят одинаково:

Код: plaintext
1.
select count(*), f1, dump(f1) from xxx group by f1 order by f1; 


Последние 2 поля совпадают по значениям?
...
Рейтинг: 0 / 0
Глюк varchar2 ?
    #32169795
dsk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
dsk
Гость
Ну хорошо, создать таблицу я могу и так:
create global temporary table xxx on commit preserve rows
as select
rtrim(ltrim(f1,' '),' ') f1 from yyy;

и так:
create global temporary table xxx on commit preserve rows
as select
trim(both ' ' from f1) f1 from yyy;

Все пофигу. результат как описано выше.
...
Рейтинг: 0 / 0
Глюк varchar2 ?
    #32169800
raven13
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что-то непонятно что ты хочешь получить запросом :-)
select * from xxx group by f1 order by f1;
Данный запрос выдает все строки из таблицы f1.

Если вам необходимы уникальные значения - используете distinct, а из вашей месаги трудно понять что вам надо
...
Рейтинг: 0 / 0
Глюк varchar2 ?
    #32169812
raven13
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пацаны лоханулся. Вчера много водки выпил. Сам не понял что написал.

select trim(f1) from xxx group by f1 order by f1;
...
Рейтинг: 0 / 0
Глюк varchar2 ?
    #32169831
Vladimir_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
попутно к обсуждению основной темы: меня всегда интересовал вопрос - зачем order by при наличии group by
...
Рейтинг: 0 / 0
Глюк varchar2 ?
    #32169837
.dba
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>попутно к обсуждению основной темы: меня всегда интересовал вопрос -
>зачем order by при наличии group by

не проверял, но думаю, что group by сортирует в binary order, а order by если не указано другого - в nls order.
...
Рейтинг: 0 / 0
Глюк varchar2 ?
    #32169851
AI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не проверял, но думаю, что group by сортирует в binary order, а order by если не указано другого - в nls order.

Стандартный order by работает в соответствии с nls_lang/nls_territory/nls_sort. Для разных территорий возможны разные настройки. Для CIS - nls_sort=binary.
...
Рейтинг: 0 / 0
Глюк varchar2 ?
    #32169852
dsk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
dsk
Гость
select count(*), f1, dump(f1) from xxx group by f1 order by f1;
Вот этот запрос многое прояснил. Там идет нулевой код (0), Оракл его нигде не отображает, вот я его и не выцепил. Вот теперь пробую его убить.

to Vladimir, а впрочем уже ответили, я кстати тоже не проверял, но рещультаты сортировки иногда различны, а иногда и нет, да и привык я так писать.
...
Рейтинг: 0 / 0
Глюк varchar2 ?
    #32169865
dsk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
dsk
Гость
Все! Всем спасибо, все пофиксил вот таким образом
update xxx set f1=trim(both chr(0) from f1);

p.s. А вот почему собственно так получилось, я попрежнему не понимаю. Связка MySQL-ODBC-Oracle в этом виновата или Excel-ODBC-Oracle... Ну да ладно, буду знать...
...
Рейтинг: 0 / 0
Глюк varchar2 ?
    #32169867
.dba
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Стандартный order by работает в соответствии с nls_lang/nls_territory/nls_sort.
>Для разных территорий возможны разные настройки. Для CIS - nls_sort=binary.

так это понятно, а как group by сортирует?
...
Рейтинг: 0 / 0
Глюк varchar2 ?
    #32169876
Фотография softy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так что пробелы тут видимо не причём, это не CHAR в конце-концов.
...
Рейтинг: 0 / 0
Глюк varchar2 ?
    #32169956
AI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
group by сортирует всегда binary, поэтому свободно использует индексы.
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Глюк varchar2 ?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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