Получить значение в битовом размере - PullRequest
0 голосов
/ 27 февраля 2019

В SQL Server & Oracle возможно ли получить битовый размер значения?

Я знаю, что int занимает 4 байта памяти, а nvarchar (n) хранит 2 раза n байтов + 2байт, но меня интересует только фактическое значение.

Если я, например, хочу проверить всю строку с разными типами данных, возможно ли получить размер в битах каждого фактического значения?

Может ли функция SQL Server DATALENGTH () применяться универсальным образом, независимо от типа данных?

1 Ответ

0 голосов
/ 27 февраля 2019

В Oracle выходные данные команды DUMP будут содержать длину (в байтах) фактического значения.Затем вы можете использовать строковые функции для извлечения длины из выходных данных.Например,

select dump(3.141592), 
       regexp_substr(dump(3.141592),'Len=([0-9]+)',1,1,'i',1) byte_length
from dual 
+-----------------------------+-------------+
|       DUMP(3.141592)        | BYTE_LENGTH |
+-----------------------------+-------------+
| Typ=2 Len=5: 193,4,15,16,93 |           5 |
+-----------------------------+-------------+

Вы должны сделать это для каждого столбца и добавить их.

Также помните, что Oracle вычисляет (или оценивает)) средняя длина строки данных в таблице, когда она вычисляет (или оценивает) статистику по этой таблице.Результаты идут в DBA_TABLES.AVG_ROW_LEN.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...