将序数格式转换为数字

Posted

技术标签:

【中文标题】将序数格式转换为数字【英文标题】:Convert Ordinal Number format to Number 【发布时间】:2013-03-07 22:26:09 【问题描述】:

我需要将 FIRST/ SECOND /THIRD /FOURTH /FIFITH .... 转换为 1 2 3 4 5 .... oracle中有没有一个功能。 其他方法如下,但我想要反向

SELECT TO_CHAR(to_date(3,'J'), 'fmJSPTH') FROM dual;

【问题讨论】:

【参考方案1】:

好问题!

create table t (w varchar2(30));

insert into t values ('First');
insert into t values ('THIRD');
insert into t values ('eleventh');
insert into t values ('Twenty-eighth');
insert into t values ('two hundred fifty sixth');

select 
  t.w, dict.n
from t
left join (
  select
    level n,
    regexp_replace(to_char(to_date(level,'J'),'fmJSPTH'),'[^A-Z]') w
  FROM dual
  connect by level <= 1000
) dict on regexp_replace(upper(t.w),'[^A-Z]')=dict.w

fiddle

【讨论】:

哇太棒了!你简直太棒了!为你鼓掌!!

以上是关于将序数格式转换为数字的主要内容,如果未能解决你的问题,请参考以下文章

SQL Server标量函数将数字转换为带有序数的单词

C#如何将带有感叹号图标注释的文本格式的数字转换为数字格式的数字?

如何将十进制格式转换为数字格式

在Excel中如何将数字格式批量转换为文本格式,并且保留二位小数?

如何把文本转化为数字

文本更改时将数字转换为货币格式