求解释 sql中字符串连接的问题
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导致的
***********
一、请解释现象
二、请问字符串连接有哪些实现方式,需要注意什么?
------解决方案--------------------
加 trim 或者 to_char('14', 'FM0099')
原因,默认补足位数时,前缀会有空格,此时,需要再做一次处理。 或者,直接使用函数提供的 FM 字样。
------解决方案--------------------直接补充是酱紫得 一般不要空格加fm
------解决方案--------------------换个函数不就行了
select '|' || to_char('14', '0099'),'|' || lpad('14',4,'0') from dual
'|'||TO_CHAR('14','0099') '|'||LPAD('14',4,'0')
------------------------- ---------------------
| 0014 |0014
------解决方案--------------------2个to_char()连接的时候会产生个空格,