sql - 将序数格式转换为数字

标签 sql database oracle plsql

我需要将 FIRST/SECOND/THIRD/FOURTH/FIFTH .... 转换为 1 2 3 4 5 .... oracle中有函数吗? 其他方式可能如下,但我想要反向

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

最佳答案

好问题!

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 - 将序数格式转换为数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15282991/

相关文章:

PHP 附加到 ClientDataSet CDS 文件

MySQL 查询以获取具有限制的众多查询的 "intersection"

sql - Oracle MIN 作为分析函数 - ORDER BY 的奇怪行为?

oracle - 如何正确地制作公共(public)同义词

java - 在 Java SQL 中自动关闭结果集

javascript - Sequelize Include On Through 关联

c# - No row at position 0 错误

sql - 甲骨文 SQL。我应该使用什么声明

database - 某些 PostgreSQL 数据库无法通过 Navicat 或 pgAdmin 等客户端查看

java - 在 Hibernate 中使用 SEQUENCE 时导致违反唯一约束的原因是什么?