powered by simpleCommunicator - 2.0.30     © 2024 Programmizd 02
Map
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Вычисляемый столбец
25 сообщений из 25, страница 1 из 1
Вычисляемый столбец
    #40126019
PaulWist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Прошу объяснить.

Что делаю:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
-- Создаём табличку
create table tbl (f1 char(10));

-- Добавляем в неё вычисл. столбец
alter table tbl 
add 
(
"f2" NVARCHAR2(10) VISIBLE GENERATED ALWAYS AS (trim(f1)) VIRTUAL
);

-- Все столбцы отображаются f1 и f2
select * from tbl;

-- Так получаю ошибку
select f2 from tbl;

ORA-00904: "F2": недопустимый идентификатор
00904. 00000 -  "%s: invalid identifier"



Как заставить выводить F2??
...
Рейтинг: 0 / 0
Вычисляемый столбец
    #40126021
Фотография AlexFF__|
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PaulWist

-- Все столбцы отображаются f1 и f2
select * from tbl;

Точно f1 и f2?
Может F1 и f2.
...
Рейтинг: 0 / 0
Вычисляемый столбец
    #40126022
Никанор Кузьмич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А так?
Код: plsql
1.
select "f2" from tbl;
...
Рейтинг: 0 / 0
Вычисляемый столбец
    #40126029
PaulWist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Никанор Кузьмич
А так?
Код: plsql
1.
select "f2" from tbl;



ОК, спасибо.

PS кто бы мог подумать
...
Рейтинг: 0 / 0
Вычисляемый столбец
    #40126032
SQL*Plus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PaulWist
Никанор Кузьмич
А так?
Код: plsql
1.
select "f2" from tbl;



ОК, спасибо.

PS кто бы мог подумать

Чаще и вдумчивее изучайте матчасть :-)
Database Object Names and Qualifiers
...
Рейтинг: 0 / 0
Вычисляемый столбец
    #40126035
PaulWist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SQL*Plus

Чаще и вдумчивее изучайте матчасть :-)
Database Object Names and Qualifiers


Дык поэтому смеюсь, слона не заметил.

Кстати, ещё вопрос, можно ли материализовать вычисляемый столбец?
...
Рейтинг: 0 / 0
Вычисляемый столбец
    #40126037
Фотография Валерий Юринский
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PaulWist
SQL*Plus

Чаще и вдумчивее изучайте матчасть :-)
Database Object Names and Qualifiers


Дык поэтому смеюсь, слона не заметил.

Кстати, ещё вопрос, можно ли материализовать вычисляемый столбец?

А вот про это поподробнее, поскольку возможны разные толкования.
...
Рейтинг: 0 / 0
Вычисляемый столбец
    #40126038
PaulWist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Валерий Юринский

А вот про это поподробнее, поскольку возможны разные толкования.


Возможно вычисляемый столбец уже является материализованным, что имеется в виду, при запросе

Код: plsql
1.
select f1, f2 from tbl



поле f2 уже хранится в таблице и не вычисляется во время запроса, те материализованный столбец, физически существующий.

(Аналог MSSQL Persistent)
...
Рейтинг: 0 / 0
Вычисляемый столбец
    #40126039
Фотография AlexFF__|
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
- А вот у вас в БД столбцы хранятся, место занимают, а можно сделать их вычисляемыми online?
- Конечно, вот вам функционал
- круто, а можно их теперь материализовать?
...
Рейтинг: 0 / 0
Вычисляемый столбец
    #40126040
Фотография Валерий Юринский
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PaulWist
Валерий Юринский

А вот про это поподробнее, поскольку возможны разные толкования.


Возможно вычисляемый столбец уже является материализованным, что имеется в виду, при запросе

Код: plsql
1.
select f1, f2 from tbl



поле f2 уже хранится в таблице и не вычисляется во время запроса, те материализованный столбец, физически существующий.

(Аналог MSSQL Persistent)

"Эт вряд ли" (с) Белое солнце пустыни

Основное правило Oracle: Не делать того, чего можно не делать.

Понятия не имею, что такое "MSSQL Persistent".. :-(
...
Рейтинг: 0 / 0
Вычисляемый столбец
    #40126044
PaulWist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Валерий Юринский


Основное правило Oracle: Не делать того, чего можно не делать.


ОК, будем "материализовать" через триггер.

2AlexFF__|

Иногда надо "денормализовать" данные в OLTP, но не через клиента, а на уровне данных.
...
Рейтинг: 0 / 0
Вычисляемый столбец
    #40126049
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
PaulWist
ОК, будем "материализовать" через триггер.
Зачем? Если для индексирования, то в индексе он будет "материализован"
...
Рейтинг: 0 / 0
Вычисляемый столбец
    #40126056
PaulWist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sayan Malakshinov
PaulWist
ОК, будем "материализовать" через триггер.
Зачем? Если для индексирования, то в индексе он будет "материализован"


Для выборки, слишком долго происходят вычисления "на лету" занимают 99% времени.
...
Рейтинг: 0 / 0
Вычисляемый столбец
    #40126061
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PaulWistДля выборки, слишком долго происходят вычисления "на лету" занимают 99% времени.

Так просто усекай данные перед занесением в поле, тогда не понадобятся ни
вычисления при выборке, ни дополнительное поле.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Вычисляемый столбец
    #40126065
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

как усечь?

....
stax
...
Рейтинг: 0 / 0
Вычисляемый столбец
    #40126068
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
PaulWist
Для выборки, слишком долго происходят вычисления "на лету" занимают 99% времени.
trim? да, не может быть...
...
Рейтинг: 0 / 0
Вычисляемый столбец
    #40126072
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sayan Malakshinov,

я так понял у PaulWist поле char

.....
stax
...
Рейтинг: 0 / 0
Вычисляемый столбец
    #40126088
booby
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sayan Malakshinov
PaulWist
Для выборки, слишком долго происходят вычисления "на лету" занимают 99% времени.
trim? да, не может быть...

кроме trim там еще преобразование типа, которое, ну вот совсем маловероятно, что осмысленно вообще, и для char(10) в частности.
Если убрать преобразование типа, то может и 99% куда-нибудь сдуются.
...
Рейтинг: 0 / 0
Вычисляемый столбец
    #40126092
SQL*Plus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
booby
Sayan Malakshinov
пропущено...
trim? да, не может быть...

кроме trim там еще преобразование типа, которое, ну вот совсем маловероятно, что осмысленно вообще, и для char(10) в частности.
Если убрать преобразование типа, то может и 99% куда-нибудь сдуются.

Не только типа, но и кодировки, поскольку обычно VARCHAR2 и NVARCHAR2 имеют разную кодировку.
Но про 99% - это фантазии, как мне кажется.

Автор!
Приведите скрипт и результаты измерений этих 99%.
...
Рейтинг: 0 / 0
Вычисляемый столбец
    #40126095
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plsql
1.
2.
-- Создаём табличку
create table tbl (f1 VARchar2(10));



SY
...
Рейтинг: 0 / 0
Вычисляемый столбец
    #40126104
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SY
Код: plsql
1.
2.
-- Создаём табличку
create table tbl (f1 VARchar2(10));



SY

-- Создаём табличку
create table tbl (f1 char(10) );

.....
stax
...
Рейтинг: 0 / 0
Вычисляемый столбец
    #40126117
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stax,

Зачем CHAR(10) а затем TRIM? VARCHAR2(10) и TRIM на INSERT/UPDATE.

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

Зачем CHAR(10) а затем TRIM? VARCHAR2(10) и TRIM на INSERT/UPDATE.

SY.

чесно говоря не понял
поле в табличке create table tbl (f1 char(10));

почему?, другой вопрос

.....
stax
...
Рейтинг: 0 / 0
Вычисляемый столбец
    #40126135
SQL*Plus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SY
Зачем CHAR(10) а затем TRIM? VARCHAR2(10) и TRIM на INSERT/UPDATE.

Предполагаю, что это всего лишь очередная попытка замаскировать реальную проблему неудачным примером.

"У меня У одного моего знакомого есть симпатичная девушка дурацкая база данных,
которая не хочет ходить со мной в кино правильно выполнять простые запросы..."
:-)
...
Рейтинг: 0 / 0
Вычисляемый столбец
    #40126201
PaulWist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SQL*Plus

Не только типа, но и кодировки, поскольку обычно VARCHAR2 и NVARCHAR2 имеют разную кодировку.
Но про 99% - это фантазии, как мне кажется.


1. Пример с вычисляемым полем был приведён, что бы "выяснить" почему была "ошибка" при селекте одного поля.

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

SQL*Plus

Автор!
Приведите скрипт и результаты измерений этих 99%.


Смысла нет, это вычисление себестоимости.

SQL*Plus

Предполагаю, что это всего лишь очередная попытка замаскировать реальную проблему неудачным примером.

"У меня У одного моего знакомого есть симпатичная девушка дурацкая база данных,
которая не хочет ходить со мной в кино правильно выполнять простые запросы..."



Ответил выше.

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


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