获取列值长度,而不是列的最大值

Buk*_*ksy 13 oracle string-length

如何获得列中的实际值长度?

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
Run Code Online (Sandbox Code Playgroud)

And*_*ter 23

LENGTH()确实返回字符串长度(刚刚验证).我想你的数据用空格填充 - 试试

SELECT typ, LENGTH(TRIM(t1.typ))
FROM AUTA_VIEW t1;
Run Code Online (Sandbox Code Playgroud)

代替.

正如OraNob所提到的,另一种原因可能是CHAR在这种情况下,使用LENGTH()也将返回列的宽度,而不是字符串长度.但是,该TRIM()方法也适用于这种情况.