Oracle SQL 中连接字符串时中间不留空格吗?

发布于 2024-12-12 20:48:30 字数 271 浏览 3 评论 0原文

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

以下是我的查询:

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

预期结果是:

c10000

但我得到的输出在 'c' 和值 10000 之间有一个空格:

c 10000 

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

I am trying to concatenate strings in oracle.

The following is my query:

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

The expected result is:

c10000

But the output I get is with a space in between 'c' and the value 10000:

c 10000 

How to concat without spaces?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

浅笑依然 2024-12-19 20:48:31

这不是连接运算符的问题,而是函数 to_char() 的问题。尝试一下:

to_char(10000,'FM99999')

我在此处引用手册

调频..
返回一个没有前导或尾随空格的值。

This is not an issue with the concatenation operator but with the function to_char(). Try instead:

to_char(10000,'FM99999')

I quote the manual here:

FM ..
Returns a value with no leading or trailing blanks.

酒儿 2024-12-19 20:48:31

有两种解决方案:

  1. 填充模式 ('FM') 格式前缀,可抑制 to_char 数字转换中的额外空白字符前缀。我建议首选这个,因为它与 to_char 格式集成,不需要额外的函数调用;
  2. to_char 数字转换返回值的 LTRIM

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

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"

There are two solutions:

  1. Fill Mode ('FM') formatting prefix that suppresses the additional blank character prefix for the to_char number conversion. I suggest this one is preferred, because it is integrated with the to_char format and does not require an additional function call;
  2. LTRIM of the returned value from the to_char number conversion.

The code below shows the results of both solutions:

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"

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文