【问题标题】: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】:

    有两种解决方案:

    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"

    【讨论】:

      【解决方案2】:

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

      to_char(10000,'FM99999')
      

      我引用the manual here

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-07-27
        • 1970-01-01
        • 1970-01-01
        • 2016-06-29
        • 1970-01-01
        • 2022-12-17
        • 1970-01-01
        相关资源
        最近更新 更多