Гость
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Перевести long в char / 25 сообщений из 30, страница 1 из 2
28.09.2020, 12:14
    #40003298
TQuestions
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перевести long в char
Добрый день! Подскажите пжл как в запросе поле long перевести в char?
Примерно такой запрос, где p.high_value тип long
select * from table1 t, dba_tab_partitions p where t.col1 = p.high_value
...
Рейтинг: 0 / 0
28.09.2020, 12:16
    #40003300
Master_Detail
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перевести long в char
Вы точно поискали ответ на форуме или погуглили?
...
Рейтинг: 0 / 0
28.09.2020, 12:24
    #40003303
TQuestions
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перевести long в char
Master_Detail, да. Нашел функции, которые не смог использовать в запросе
...
Рейтинг: 0 / 0
28.09.2020, 13:03
    #40003344
orawish
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перевести long в char
TQuestions
Добрый день! Подскажите пжл как в запросе поле long перевести в char?
Примерно такой запрос, где p.high_value тип long
select * from table1 t, dba_tab_partitions p where t.col1 = p.high_value

в общем случае - никак
сравните лимиты по этим типам и успокойтесь

ну еще есть путь - зарыть тот тип long на.., то есть в пропасть
для чего и ждет вас to_lob уже лет 20 как
...
Рейтинг: 0 / 0
28.09.2020, 13:33
    #40003381
Leonid Kudryavtsev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перевести long в char
думаю, что Server Side Java должна с Long работать нормально. Но сам не проверял. Нужды не было

В OCI (C) и Client Java проблем с Long нет. Ф-ции для работы с BLOB совершенно нормально работают и с Long'ами.

Подозреваю разный интерфейс Long / Blob был до (возможно включительно) PRO*C Oracle 8.0. Уже в 8i интерфейс унифицировали.

AFAIK
...
Рейтинг: 0 / 0
28.09.2020, 14:06
    #40003404
Stax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перевести long в char
TQuestions,

У Вас лонг в табличке или вью?

ps
если длина до 32к то через ф-цию пл/скл

.....
stax
...
Рейтинг: 0 / 0
28.09.2020, 14:19
    #40003411
кит северных морей
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перевести long в char
TQuestions
select * from table1 t, dba_tab_partitions p where t.col1 = p.high_value
что конкретно вы хотите получить этим запросом? скорее всего есть более простые способы.
...
Рейтинг: 0 / 0
28.09.2020, 14:47
    #40003433
TQuestions
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перевести long в char
Stax, вью
...
Рейтинг: 0 / 0
28.09.2020, 14:50
    #40003436
TQuestions
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перевести long в char
кит северных морей, нужно найти определенные названия партиций при наложении условий на таблицу table1

Т.е. существует очень большая таблица table1. нужно бежать по нужным партициям и дропать их
...
Рейтинг: 0 / 0
28.09.2020, 15:04
    #40003448
Stax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перевести long в char
TQuestions
Stax, вью

жаль, нет ровида

надеялся что dba_tab_partitions токо для примера

тагда можно определится что для dba_tab_partitions уникальный ключ и по нему
в pl/sql сравнивать col1 = p.high_value

.....
stax
...
Рейтинг: 0 / 0
28.09.2020, 15:09
    #40003450
кит северных морей
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перевести long в char
TQuestions
кит северных морей, нужно найти определенные названия партиций при наложении условий на таблицу table1

Т.е. существует очень большая таблица table1. нужно бежать по нужным партициям и дропать их


1) dbms_rowid.rowid_object(table1.rowid) + dba_objects.data_object_id

2) alter table drop partition for ( ... ) с учетом значения all_tab_partitions.interval

писать свой собственный парсер имеет смысл тогда, когда вам зачем-то нужно получить метаданные секции, в которой нет ни одной строки. в общем случае там очень много нюансов, которые нужно учесть (например то, что RANGE-секционирование бывает многоколоночным). скорее всего, вам это не нужно.
...
Рейтинг: 0 / 0
28.09.2020, 15:09
    #40003451
env
env
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перевести long в char
TQuestions,

А конструкция partition for () не подойдёт?
...
Рейтинг: 0 / 0
28.09.2020, 15:12
    #40003452
orawish
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перевести long в char
TQuestions
кит северных морей, нужно найти определенные названия партиций при наложении условий на таблицу table1

Т.е. существует очень большая таблица table1. нужно бежать по нужным партициям и дропать их


ну и бегите и дропайте
.. partition for
...
Рейтинг: 0 / 0
28.09.2020, 15:15
    #40003456
кит северных морей
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перевести long в char
кит северных морей
TQuestions
кит северных морей, нужно найти определенные названия партиций при наложении условий на таблицу table1

Т.е. существует очень большая таблица table1. нужно бежать по нужным партициям и дропать их


1) dbms_rowid.rowid_object(table1.rowid) + dba_objects.data_object_id

2) alter table drop partition for ( ... ) с учетом значения all_tab_partitions.interval

писать свой собственный парсер имеет смысл тогда, когда вам зачем-то нужно получить метаданные секции, в которой нет ни одной строки. в общем случае там очень много нюансов, которые нужно учесть (например то, что RANGE-секционирование бывает многоколоночным). скорее всего, вам это не нужно.

ну и сильные духом могут побаловаться с недокументированной tbl$or$idx$part$num, которая позволяет получить object_id секции по значению partition key.
...
Рейтинг: 0 / 0
28.09.2020, 15:28
    #40003467
TQuestions
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перевести long в char
К сожалению, у меня? наверное? не такой большой опыт...я не совсем понял ваших решений. Можно на пальцах, как найти названия партиций в таблице table1, например, по условию col2 = 1, если таблица парционирована по col1, а названия партиций лежат в поле long dba_tab_partitions.high_value
...
Рейтинг: 0 / 0
28.09.2020, 15:38
    #40003477
orawish
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перевести long в char
TQuestions
К сожалению, у меня? наверное? не такой большой опыт...я не совсем понял ваших решений. Можно на пальцах, как найти названия партиций в таблице table1, например, по условию col2 = 1, если таблица парционирована по col1, а названия партиций лежат в поле long dba_tab_partitions.high_value

вам же всё показали уже

нет нужды знать имя секции, если знаете значение из той секции, которую хотите например, удалить
(какое? да любое )
...
Рейтинг: 0 / 0
28.09.2020, 15:47
    #40003486
SY
SY
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перевести long в char
TQuestions
К сожалению, у меня? наверное? не такой большой опыт...я не совсем понял ваших решений. Можно на пальцах, как найти названия партиций в таблице table1, например, по условию col2 = 1, если таблица парционирована по col1, а названия партиций лежат в поле long dba_tab_partitions.high_value



Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
with t as (
           select  distinct dbms_mview.pmarker(rowid) object_id
             from  table1
             where col2 = 1
          )
select  o.object_name    table_name,
        o.subobject_name partition_name
  from  t,
        user_objects o
  where o.object_id = t.object_id
/



SY.
...
Рейтинг: 0 / 0
28.09.2020, 15:51
    #40003490
SY
SY
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перевести long в char
orawish

нет нужды знать имя секции, если знаете значение из той секции, которую хотите например, удалить
(какое? да любое )


авторпо условию col2 = 1, если таблица парционирована по col1,


SY.
...
Рейтинг: 0 / 0
28.09.2020, 15:53
    #40003492
env
env
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перевести long в char
TQuestions
например, по условию col2 = 1, если таблица парционирована по col1

Именно для варианта секционирована по одному полю, а фильтр по совершенно другому?
...
Рейтинг: 0 / 0
28.09.2020, 16:07
    #40003506
SY
SY
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перевести long в char
Хотя можно и выполнить DROP PARTINION FOR всем полученным значениям COL1 с NULL exception handler на ORA-14702 но неэффективно (двойной поиск).

SY.
...
Рейтинг: 0 / 0
28.09.2020, 16:17
    #40003517
TQuestions
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перевести long в char
SY, не работает( ничего не возвращает. поменял на all_objects или dba_objects, тогда результат есть, но partition_name пусто
...
Рейтинг: 0 / 0
28.09.2020, 16:18
    #40003519
TQuestions
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перевести long в char
env, можно подробнее
...
Рейтинг: 0 / 0
28.09.2020, 16:19
    #40003521
TQuestions
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перевести long в char
env, да
...
Рейтинг: 0 / 0
28.09.2020, 16:24
    #40003524
env
env
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перевести long в char
TQuestions,

В вашем примере секции нарезаны по col 1 , но условие по col 2 . Это опечатка или действительно надо найти все секции, в которых есть хотя бы одна строка с полем col 2 отвечающим на момент запроса условию фильтра?
...
Рейтинг: 0 / 0
28.09.2020, 16:29
    #40003529
env
env
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перевести long в char
TQuestions,

Запрос Соломона работает. Если таблица не в вашей схеме, то вам в all/dba_objects с указанием схемы.
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Перевести long в char / 25 сообщений из 30, страница 1 из 2
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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