select to_char(8888,'$9,999.99'),length(to_char(8888,'$9,999.99')) as leng from dual
得到:
   
        $8,888.00         10select to_char(8888,'$99,999.99'),length(to_char(8888,'$99,999.99')) as leng from dual
得到:       $8,888.00         11是怎么得到这个长度的啊???

解决方案 »

  1.   

    用dump函数看一下内部存储:
    column a format a20
    column b format a60select to_char(8888,'$99,999.99') a,dump(to_char(8888,'$99,999.99')) b from dualA                    B
    -------------------- ------------------------------------------------
      $8,888.00          Typ=1 Len=11: 32,32,36,56,44,56,56,56,46,48,48前面多了两个空格
      

  2.   

    看这个查询
    select dump(to_char(8888,'$99,999.99')) b from dual 这是返回结果

    ------------------------------------------------ 
    Typ=1 Len=11: 32,32,36,56,44,56,56,56,46,48,48 Typ=1表示返回类型是VARCHAR2,
    Len=11表示返回的字符串长度为11
    后面用逗号分开的数字是每个字符的ASCII码,要知道数据对应的ascii,用函数CHR
       如
    SQL>SELECT CHR(36) FROM DUAL;
    返回一个$
    SQL>SELECT CHR(32) FROM DUAL;
    返回空格。这样就知道每个字符的含义了。
      

  3.   

    select dump(to_char(8888,'$99,999.99')) b from dual 3楼的正解啊,说的不错,以后多向三楼请教请教这类问题!