pumeifen朋友在首页提出了一个问题“SQL 问题 求解”,我对这个问题延伸一下描述为“用数据库来做单位换算”,以长度单位为例,常用的长度单位有:毫米、厘米、分米等等,而英制的长度单位有英寸、英尺、码等,而我国传统的长度单位也有寸、尺、丈等等。
小学时学习单位换算的基本算法都是将他们转换成同一个长度单位然后再换算的,我借鉴这个算法写下此文。
首先在Oracle中构建一个长度单位的转换表:
create table Length
(
name varchar2(50),
ratio number(10,5) not null,
parent varchar2(50),
constraints pk_length primary key (name)
)
插入测试数据:
insert into Length
---- 国际标准的长度单位
select '毫米' ,1.0 ,null from dual union all
select '厘米' ,10.0 ,'毫米' from dual union all
select '分米' ,10.0 ,'厘米' from dual union all
select '米' ,10.0 ,'分米' from dual union all
select '千米' ,1000.0 ,'米' from dual union all
---- 我国传统的长度单位
select '寸' ,3.33,'厘米' from dual union all
select '尺' ,10.0 ,'寸' from dual union all
select '丈' ,10.0 ,'尺' from dual union all
---- 少数欧美国家使用的英制长度单位
select '英寸' , 2.54 , '厘米' from dual union all
select '英尺' , 12.0 , '英寸' from dual union all
select '码' , 3.0 , '