Полезный пример, когда использовать функцию vsize вместо функции длины в Oracle? - PullRequest
4 голосов
/ 30 декабря 2008

Кажется, vsize () и length () возвращают одинаковые результаты. Кто-нибудь знает практический пример использования vsize вместо length?

select vsize(object_name), length(object_name) from user_objects

Результат:

/468ba408_LDAPHelper    20  20
/de807749_LDAPHelper    20  20
A4201_A4201_UK  14  14
A4201_PGM_FK_I  14  14
A4201_PHC_FK_I  14  14

Ответы [ 2 ]

5 голосов
/ 30 декабря 2008

Ну, Length () принимает символьный аргумент (CHAR, VARCHAR2, NCHAR, NVARCHAR2, CLOB или NCLOB), тогда как VSize () принимает практически любой тип данных, так что если вы передаете Length () тип данных нехарактерный быть неявным преобразованием.

Длина также чувствительна к наборам символов.

drop table daa_test;
create table daa_test as select sysdate dt from dual;
alter session set nls_date_format = 'YYYY-MM-DD';
select vsize(dt)  from daa_test;
select length(dt) from daa_test;
alter session set nls_date_format = 'YYYY-MM-DD HH24:mi:ss';
select vsize(dt)  from daa_test;
select length(dt) from daa_test;

... давая ...

drop table daa_test succeeded.
create table succeeded.
alter session set succeeded.
VSIZE(DT)              
---------------------- 
7                      

1 rows selected

LENGTH(DT)             
---------------------- 
10                     

1 rows selected

alter session set succeeded.
VSIZE(DT)              
---------------------- 
7                      

1 rows selected

LENGTH(DT)             
---------------------- 
19                     

1 rows selected

VSize действительно полезен IMHO для понимания требований к внутреннему хранилищу данных.

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