1

我想在数据库中实现质量、体积、温度等单位的单位转换功能。我的背景是软件开发,所以我自然倾向于为此任务创建一堆用户定义的函数。但我偷偷怀疑有一种更“SQLish”的方式来实现这一点。

基于表格的方法,例如此处此处描述的方法会非常好,但我认为没有简单的方法可以将这种方法扩展到与单个乘数无关的单位,例如温度(F-to-C,C -to-F) 或原子质量 (kgmol-to-kg)。我见过多步骤方法(例如此处描述的方法),但这些方法似乎过于复杂而无用。

我在这里遗漏了一些明显的东西,还是函数真的是唯一的方法?

4

2 回答 2

1

要处理温度转换,您的转换表应该有一个乘数和一个偏移量。例如,对于 F --> C,偏移量为 -32,乘数为 5/9。

如果您事先知道所有可能的单位,那么基于表格的消息就可以正常工作。但是,如果您想要一个完全灵活的系统,例如米^5*升到英寸^5*加仑,那么您需要一个贝司单位表和一个用户定义的函数来进行转换。此函数可能会使用递归 cte 来解析单位表达式。所有这些都会相当复杂,所以希望你有一个完整的单位列表。

于 2012-06-21T17:55:36.877 回答
0

最后,我决定坚持使用 UDF。该决定的主要动机是基于表格的方法的复杂性似乎不合理,因为这项任务的频率很低。此外,一些函数(例如ConvertMass())依赖于子查询(例如,确定给定组件的原子量)。因此,UDF 似乎是最谨慎的方法。

于 2012-07-03T22:31:50.927 回答