powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Перевести long в char
25 сообщений из 30, страница 1 из 2
Перевести long в char
    #40003298
TQuestions
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день! Подскажите пжл как в запросе поле long перевести в char?
Примерно такой запрос, где p.high_value тип long
select * from table1 t, dba_tab_partitions p where t.col1 = p.high_value
...
Рейтинг: 0 / 0
Перевести long в char
    #40003300
Master_Detail
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вы точно поискали ответ на форуме или погуглили?
...
Рейтинг: 0 / 0
Перевести long в char
    #40003303
TQuestions
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Master_Detail, да. Нашел функции, которые не смог использовать в запросе
...
Рейтинг: 0 / 0
Перевести long в char
    #40003344
Фотография orawish
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Перевести long в char
    #40003381
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
думаю, что Server Side Java должна с Long работать нормально. Но сам не проверял. Нужды не было

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

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

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

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

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

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

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

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

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

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

.....
stax
...
Рейтинг: 0 / 0
Перевести long в char
    #40003450
Фотография кит северных морей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Перевести long в char
    #40003451
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TQuestions,

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

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


ну и бегите и дропайте
.. partition for
...
Рейтинг: 0 / 0
Перевести long в char
    #40003456
Фотография кит северных морей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
кит северных морей
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
Перевести long в char
    #40003467
TQuestions
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
К сожалению, у меня? наверное? не такой большой опыт...я не совсем понял ваших решений. Можно на пальцах, как найти названия партиций в таблице table1, например, по условию col2 = 1, если таблица парционирована по col1, а названия партиций лежат в поле long dba_tab_partitions.high_value
...
Рейтинг: 0 / 0
Перевести long в char
    #40003477
Фотография orawish
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TQuestions
К сожалению, у меня? наверное? не такой большой опыт...я не совсем понял ваших решений. Можно на пальцах, как найти названия партиций в таблице table1, например, по условию col2 = 1, если таблица парционирована по col1, а названия партиций лежат в поле long dba_tab_partitions.high_value

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

нет нужды знать имя секции, если знаете значение из той секции, которую хотите например, удалить
(какое? да любое )
...
Рейтинг: 0 / 0
Перевести long в char
    #40003486
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Перевести long в char
    #40003490
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
orawish

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


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


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

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

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

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

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


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