【问题标题】:Query adding white spaces after a month name查询在月份名称后添加空格
【发布时间】:2013-11-02 17:42:44
【问题描述】:

我正在使用 Oracle 10。

我想从数据库中选择日期格式:

02<sup>nd</sup> November 2013

查询以上结果:

select
replace(
    replace(
        replace(
            replace(
                to_char(to_date('02-Nov-2013','dd-Mon-yyyy'),'ddth Month yyyy')
            ,'nd','<sup>nd</sup>')
        ,'st','<sup>st</sup>')
    ,'th','<sup>th</sup>')
,'Augu<sup>st</sup>','August')
from dual

以上查询执行良好。但它在year 之前为输出添加了更多空格,我得到的输出如下:(而不是一个空格,输出在一年之前包含两个空格)

02<sup>nd</sup> November__2013    //underscore denotes space

如果日期包含August 月份,则输出包含四个空格,而不是一个。

02<sup>nd</sup> August____2013    //underscore denotes space

任何建议将不胜感激。

我找到了一种解决方案,但我仍然不确定为什么上面的查询会在输出中添加额外的空格。

select
regexp_replace(
  replace(
    replace(
      replace(
        replace(
          to_char(to_date('02-Aug-2013','dd-Mon-yyyy'),'ddth Month yyyy')
        ,'nd','<sup>nd</sup>')
      ,'st','<sup>st</sup>')
    ,'th','<sup>th</sup>')
  ,'Augu<sup>st</sup>','August')
,'[[:space:]][[:space:]]*',' ')
from dual

【问题讨论】:

    标签: sql oracle


    【解决方案1】:

    最长的月份长度为 9。因此,所有月份都在右侧用空格填充,组成 9 个字符。

    您可以指定fm格式模型来修剪空间。

    to_char(to_date('04-May-2013','dd-Mon-yyyy'),'ddth fmMonth yyyy')
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-03-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-19
      相关资源
      最近更新 更多