Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 SQL выборка данных по размеру или по длине значения  [new]
Miner_Mira
Member

Откуда:
Сообщений: 7
Есть БД ORACLE
Есть в ней таблица с фотографиями, тип данных BLOB.
Некоторые фото плохого качества. Необходимо заменить эти фото.
Отличительная особенность фото плохого качества - это малый размер данных в столбце FOTO, тип данных BLOB (к примеру данные занимают менее 5 килоБайт).
Задача = найти строки в таблице с фотографиями, где данные в столбце FOTO занимают менее 5 килоБайт.
3 окт 18, 19:38    [21694526]     Ответить | Цитировать Сообщить модератору
 Re: SQL выборка данных по размеру или по длине значения  [new]
SY
Member

Откуда: Middlebury, CT USA
Сообщений: 9244
A что LENGTH уже отменили?

SY.
3 окт 18, 19:42    [21694528]     Ответить | Цитировать Сообщить модератору
 Re: SQL выборка данных по размеру или по длине значения  [new]
Elic
Member

Откуда: 1984. Выбраковка финно-угром продолжается. КЯЗ
Сообщений: 28496
SY
A что LENGTH уже отменили?
А по какой документации ей быть применимой к BLOB?
4 окт 18, 08:07    [21694771]     Ответить | Цитировать Сообщить модератору
 Re: SQL выборка данных по размеру или по длине значения  [new]
maverick2104
Member

Откуда:
Сообщений: 250
dbms_lob.getlength
4 окт 18, 08:32    [21694782]     Ответить | Цитировать Сообщить модератору
 Re: SQL выборка данных по размеру или по длине значения  [new]
Miner_Mira
Member

Откуда:
Сообщений: 7
maverick2104,

SELECT DBMS_LOB.GETLENGTH(foto) FROM fotes
where id=47

ORA-00997: неверное использование типа данных LONG

что делать?
7 окт 18, 14:58    [21697361]     Ответить | Цитировать Сообщить модератору
 Re: SQL выборка данных по размеру или по длине значения  [new]
dmdmdm
Member

Откуда: Нижний Новгород
Сообщений: 1117
Miner_Mira
что делать?


Для начала выдать нормальный test case.

+
Connected to Oracle Database 18c Standard Edition 2 Release 18.0.0.0.0 
Connected as system@TEST

SQL> create table t1(f blob);

Table created


SQL> insert into t1 values(utl_raw.cast_to_raw('test'));

1 row inserted


SQL> select dbms_lob.getlength(f) from t1;

DBMS_LOB.GETLENGTH(F)
---------------------
                    4

SQL> 
7 окт 18, 15:49    [21697373]     Ответить | Цитировать Сообщить модератору
 Re: SQL выборка данных по размеру или по длине значения  [new]
SY
Member

Откуда: Middlebury, CT USA
Сообщений: 9244
Elic
А по какой документации ей быть применимой к BLOB?


Доверяй, но проверяй:

SQL> create table tbl(b blob)
  2  /

Table created.

SQL> declare
  2      v_blob blob := utl_raw.cast_to_raw(lpad('9',1000,'9'));
  3  begin
  4      for v_i in 1..20 loop
  5        dbms_lob.append(v_blob,v_blob);
  6      end loop;
  7      insert into tbl values(v_blob);
  8  end;
  9  /

PL/SQL procedure successfully completed.

SQL> select  length(b) length_b,
  2          dbms_lob.getlength(b) getlength_b
  3    from  tbl
  4  /

  LENGTH_B GETLENGTH_B
---------- -----------
1048576000  1048576000

SQL> 


SY.
7 окт 18, 16:11    [21697381]     Ответить | Цитировать Сообщить модератору
 Re: SQL выборка данных по размеру или по длине значения  [new]
SY
Member

Откуда: Middlebury, CT USA
Сообщений: 9244
Miner_Mira
что делать?


Медитировать на тему LONG vs BLOB. И читать доку:

LONG
The LONG datatype stores character strings longer than 4000 bytes. You can store up to two gigabytes (2^31-1 bytes) in a LONG column. Columns of this type are used only for storage and retrieval of long strings. They cannot be used in functions, expressions, or WHERE clauses. LONG column values are generally converted to and from character strings.

Do not create tables with LONG columns. Use LOB columns (CLOB, NCLOB, or BLOB) instead. LONG columns are supported only for backward compatibility.

Oracle also recommends that you convert existing LONG columns to LOB columns. LOB columns are subject to far fewer restrictions than LONG columns. Furthermore, LOB functionality is enhanced in every release, but LONG functionality has been static for several releases.

SY.
7 окт 18, 16:20    [21697384]     Ответить | Цитировать Сообщить модератору
 Re: SQL выборка данных по размеру или по длине значения  [new]
Elic
Member

Откуда: 1984. Выбраковка финно-угром продолжается. КЯЗ
Сообщений: 28496
SY
Доверяй, но проверяй:
Соломон, при наличии документированных средств нет никакой надобности эксплуатировать недокументированные, рискуя получить когда-нибудь нежданьчик, не правда ли? В качестве тарантула ты б такое посоветовал?
8 окт 18, 07:56    [21697676]     Ответить | Цитировать Сообщить модератору
 Re: SQL выборка данных по размеру или по длине значения  [new]
Miner_Mira
Member

Откуда:
Сообщений: 7
Тип данных таблицы фото TOAD отображает по разному, как BLOB и как LONG.

К сообщению приложен файл. Размер - 32Kb
9 окт 18, 22:07    [21699802]     Ответить | Цитировать Сообщить модератору
 Re: SQL выборка данных по размеру или по длине значения  [new]
Miner_Mira
Member

Откуда:
Сообщений: 7


К сообщению приложен файл. Размер - 32Kb
9 окт 18, 22:10    [21699809]     Ответить | Цитировать Сообщить модератору
 Re: SQL выборка данных по размеру или по длине значения  [new]
Miner_Mira
Member

Откуда:
Сообщений: 7


К сообщению приложен файл. Размер - 30Kb
9 окт 18, 22:11    [21699812]     Ответить | Цитировать Сообщить модератору
 Re: SQL выборка данных по размеру или по длине значения  [new]
Miner_Mira
Member

Откуда:
Сообщений: 7
Извиняюсь две первых одинаковые BLOB залил.
Но тот же TOAD может посчитать размер этих данных без проблем
Неужели нет метода в SQL, который так же просто мог считать размер данных как TOAD ?

К сообщению приложен файл. Размер - 11Kb
9 окт 18, 22:12    [21699813]     Ответить | Цитировать Сообщить модератору
 Re: SQL выборка данных по размеру или по длине значения  [new]
Miner_Mira
Member

Откуда:
Сообщений: 7
ситуация прежняя

SELECT DBMS_LOB.GETLENGTH(IMAGE) FROM IMAGES
where pid=....

ORA-00997: неверное использование типа данных LONG
9 окт 18, 22:15    [21699818]     Ответить | Цитировать Сообщить модератору
 Re: SQL выборка данных по размеру или по длине значения  [new]
Elic
Member

Откуда: 1984. Выбраковка финно-угром продолжается. КЯЗ
Сообщений: 28496
Miner_Mira
ORA-00997: неверное использование типа данных LONG
Искалеченная гуем дитя, какой древности проект тебе попался? Грубо говоря, такие типы данных использовались в прошлом(!) веке.
10 окт 18, 07:39    [21700020]     Ответить | Цитировать Сообщить модератору
 Re: SQL выборка данных по размеру или по длине значения  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 16916
Miner_Mira
Но тот же TOAD может посчитать размер этих данных без проблем
Неужели нет метода в SQL, который так же просто мог считать размер данных как TOAD ?

Нет.
Ваши данные лежат в LONG RAW.
Этот "недотип" не поддерживается в PL/SQL, только OCI и, емнип, JDBC.
10 окт 18, 11:05    [21700176]     Ответить | Цитировать Сообщить модератору
 Re: SQL выборка данных по размеру или по длине значения  [new]
-2-
Member

Откуда:
Сообщений: 14118
andrey_anonymous
Этот "недотип" не поддерживается в PL/SQL
Определить длину до 32К можно. А больше и не нужно.
10 окт 18, 11:19    [21700195]     Ответить | Цитировать Сообщить модератору
 Re: SQL выборка данных по размеру или по длине значения  [new]
orawish
Member

Откуда: Гадюкино-2 (City)
Сообщений: 15438
Miner_Mira
maverick2104,

SELECT DBMS_LOB.GETLENGTH(foto) FROM fotes
where id=47

ORA-00997: неверное использование типа данных LONG

что делать?

завязывать с пыльными недо_типами
to_lob
10 окт 18, 15:06    [21700594]     Ответить | Цитировать Сообщить модератору
 Re: SQL выборка данных по размеру или по длине значения  [new]
andreymx
Member

Откуда: Запорожье
Сообщений: 49205
andrey_anonymous
Miner_Mira
Но тот же TOAD может посчитать размер этих данных без проблем
Неужели нет метода в SQL, который так же просто мог считать размер данных как TOAD ?

Нет.
Ваши данные лежат в LONG RAW.
Этот "недотип" не поддерживается в PL/SQL, только OCI и, емнип, JDBC.
смотрели прорабатывали закачку VarBinary(max) из mssql кусочками по 4к; на основании чего строился линк, щаз не скажу, что-то бесплатное
тип оказался LONG RAW
10 окт 18, 19:43    [21700953]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить