获取列值长度,而非列值的最大长度

19

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

我的(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

3
您的列TYP是CHAR数据类型吗?CHAR是固定长度的。 如果它是VARCHAR2,您的查询应该可以工作。 - OraNob
@oraNob 很好的发现 - 无论如何,使用 trim() 方法也适用于使用 CHAR 的情况。 - Andreas Fester
1个回答

28
< p > LENGTH() 函数返回字符串的长度(已经验证)。我猜测您的数据是用空格填充的 - 请尝试

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

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

相反的方法.


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接