Well, Length () takes a character argument (CHAR, VARCHAR2, NCHAR, NVARCHAR2, CLOB, or NCLOB), while VSize () accepts almost any data type, so if you pass Length () an uncharacteristic data type must be an implicit conversion.
Length is also sensitive to character sets.
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;
... providing ...
drop table daa_test succeeded. create table succeeded. alter session set succeeded. VSIZE(DT)
VSize really uses IMHO to understand the internal requirements for data storage.
source share