Oracle length()函数返回不正确的值

时间:2009-10-13 04:21:50

标签: sql oracle

我刚发现了一些......我不知道我叫它的是什么,但是这里有:

SELECT part_num, 
       length(trim(part_num)) 
  FROM part_programs 
 WHERE rownum <= 10;

...的结果:

PART_NUM        LENGTH(TRIM(PART_NUM))
--------------- ----------------------
THAB256         8
THA1256674      11
THA1256674GU    13
THA1257141      11
THA1257141FR    13
THA1257141FR1   14
THA1257141TD    13
THA2002013      11
THA2002013MI    13
THA2002013MI1   14

来自length()调用的返回整数实际上返回值的1 + realLength。

我不知道从哪里开始,任何人都想关灯?

2 个答案:

答案 0 :(得分:5)

尝试使用内置的DUMP功能

查看字段的详细信息
SELECT part_num,
       length(trim(part_num)),
       dump( trim( part_num ) )
  FROM part_programs  
 WHERE rownum <= 10;

这将返回

之类的数据
Typ=96 Len=6: 79,114,97,99,108,101

来自此查询

SELECT dump( 'Oracle' ) from dual

答案 1 :(得分:3)

您可能在TRIM()未删除的那些part_nums的末尾有一个不可见的字符(如CR)。

只是一个猜测。 : - )

尝试用'['||括起来包围它们part_num ||选择中的']',看看你是否注意到场地两侧有一些额外的空白区域。