在Oracle SQL中连接字符串而中间没有空格?

时间:2011-10-30 13:59:10

标签: sql string oracle oracle10g concatenation

我正在尝试在oracle中连接字符串。

以下是我的疑问:

insert into dummy values('c'||to_char(10000,'99999'));

预期结果是:

c10000

但我得到的输出是'c'和值10000之间的空格:

c 10000 

如何在没有空格的情况下进行连接?

2 个答案:

答案 0 :(得分:20)

这不是串联运算符的问题,而是函数to_char()。请尝试改为:

to_char(10000,'FM99999')

我引用the manual here

  

FM ..   返回没有前导或尾随空格的值。

答案 1 :(得分:0)

有两种解决方案:

  1. 填充模式('FM')格式前缀,可取消to_char数字转换的其他空白字符前缀。我建议最好使用此方法,因为它与to_char格式集成在一起,不需要其他函数调用;
  2. LTRIM来自to_char数字转换的返回值。

下面的代码显示了两种解决方案的结果:

Select concat('NTA', to_char(1,'FM0000000000000')), 
concat('NTA', ltrim(to_char(1,'0000000000000'))), 
concat('NTA', to_char(1,'0000000000000'))
from dual;

"CONCAT('NTA',TO_CHAR(1,'FM0000000000000'))":“ NTA0000000000001” "CONCAT('NTA',LTRIM(TO_CHAR(1,'0000000000000')))":“ NTA0000000000001” "CONCAT('NTA',TO_CHAR(1,'0000000000000'))":“ NTA 0000000000001”