在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中连接字符串之间没有空格?的主要内容,如果未能解决你的问题,请参考以下文章

没有空格的 Oracle 正则表达式

如何从 PL SQL Developer 的连接中找出 Oracle 连接字符串?

在oracle sql中将字符串行连接到最大长度

数据库中怎么将一个字符串中的多个连续空格换成一个空格? oracle的存储过程中怎么样实现?

ORACLE如何查看修改连接数,进程数及用户数,三者之间关系

oracle如何去除某个字段中两边的空格