Получить длину значения столбца, а не максимальную длину значения столбца

Как получить фактическую длину значения в столбце?

Команда My (oracle) sql возвращает максимальную длину значения, которое можно вставить в столбец, вместо реальной длины значения.

Как это исправить?

SQL> SELECT typ, length(t1.typ)
     FROM AUTA_VIEW t1;

TYP        LENGTH(T1.TYP)
---------- --------------
BMW                    10
BMW                    10
BMW                    10
Ferrari                10
BMW                    10
Audi                   10
Audi                   10
Audi                   10
Ferrari                10
Ferrari                10
Mercedes               10

person Buksy    schedule 25.10.2012    source источник
comment
Является ли ваш столбец TYP типом данных CHAR? CHAR имеет фиксированную длину. Если это VARCHAR2, ваш запрос должен работать.   -  person OraNob    schedule 25.10.2012
comment
@oraNob Хороший улов - в любом случае подход trim() также работает при использовании CHAR.   -  person Andreas Fester    schedule 25.10.2012


Ответы (1)


LENGTH() возвращает длину строки (только что проверено). Я предполагаю, что ваши данные заполнены пробелами - попробуйте

SELECT typ, LENGTH(TRIM(t1.typ))
FROM AUTA_VIEW t1;

вместо.

Как упоминалось в OraNob, другой причиной может быть то, что используется CHAR, и в этом случае LENGTH() также будет возвращать ширину столбца, а не длину строки. Однако подход TRIM() работает и в этом случае.

person Andreas Fester    schedule 25.10.2012