【问题标题】:Concatenate strings in Oracle SQL without a space in between?在Oracle SQL中连接字符串之间没有空格?
【发布时间】:2011-12-18 05:19:41
【问题描述】:
我正在尝试在 oracle 中连接字符串。
以下是我的查询:
insert into dummy values('c'||to_char(10000,'99999'));
预期结果是:
c10000
但我得到的输出是在 'c' 和值 10000 之间有一个空格:
c 10000
如何连接没有空格?
【问题讨论】:
标签:
sql
string
oracle
oracle10g
concatenation
【解决方案1】:
有两种解决方案:
- 填充模式 ('
FM') 格式前缀,用于抑制 to_char 数字转换的附加空白字符前缀。我建议首选这个,因为它集成了 to_char 格式,不需要额外的函数调用;
-
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"
【解决方案2】:
这不是连接运算符的问题,而是函数to_char() 的问题。试试吧:
to_char(10000,'FM99999')
我引用the manual here:
调频..
返回一个没有前导或尾随空格的值。