select  to_char(sysdate, 'YYYYMMDD')||to_char('14', '0099') from dual; 结果是 20120522 0014 中间会多出一个空格来,这是为什么?用select  to_char(sysdate, 'YYYYMMDD')||trim(to_char('14', '0099') ) from dual;可以修改掉这个问题,说明空格的出现是由 to_char 函数导致的
另外,用select  concat ( to_char(sysdate, 'YYYYMMDD'), '0014' ) from dual;就不会出现这个问题,它的结果是201205220014,正常。这也映证了前面的问题是由to_char导致的
***********一、请解释现象二、请问字符串连接有哪些实现方式,需要注意什么?     

解决方案 »

  1.   

    加 trim 或者 to_char('14', 'FM0099')    原因,默认补足位数时,前缀会有空格,此时,需要再做一次处理。 或者,直接使用函数提供的 FM 字样。
      

  2.   

    换个函数不就行了
    select '|' || to_char('14', '0099'),'|' || lpad('14',4,'0') from dual
    '|'||TO_CHAR('14','0099') '|'||LPAD('14',4,'0') 
    ------------------------- --------------------- 
    | 0014                    |0014                 
      

  3.   

    2个to_char()连接的时候会产生个空格,