在Oracle SQL中连接字符串之间没有空格?
Posted
技术标签:
【中文标题】在Oracle SQL中连接字符串之间没有空格?【英文标题】:Concatenate strings in Oracle SQL without a space in between? 【发布时间】:2011-12-18 05:19:41 【问题描述】:我正在尝试在 oracle 中连接字符串。
以下是我的查询:
insert into dummy values('c'||to_char(10000,'99999'));
预期结果是:
c10000
但我得到的输出是在 'c' 和值 10000 之间有一个空格:
c 10000
如何连接没有空格?
【问题讨论】:
【参考方案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:
调频.. 返回一个没有前导或尾随空格的值。
【讨论】:
以上是关于在Oracle SQL中连接字符串之间没有空格?的主要内容,如果未能解决你的问题,请参考以下文章
如何从 PL SQL Developer 的连接中找出 Oracle 连接字符串?
数据库中怎么将一个字符串中的多个连续空格换成一个空格? oracle的存储过程中怎么样实现?