web-dev-qa-db-ja.com

値の列の最大長ではなく、列の値の長さを取得します

列の値の実際の長さを取得するにはどうすればよいですか?

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
13
Buksy

LENGTH()は、文字列の長さ(検証済み)を返します。データに空白が埋め込まれていると思います-試してください

_SELECT typ, LENGTH(TRIM(t1.typ))
FROM AUTA_VIEW t1;
_

代わりに。

OraNobが述べたように、別の原因としてCHARが使用されている場合、LENGTH()も文字列の長さではなく列の幅を返します。ただし、この場合はTRIM()アプローチも機能します。

23
Andreas Fester