unit
SI 国标单位扩展
仓库
df7cb/postgresql-unit
https://github.com/df7cb/postgresql-unit
源码
postgresql-unit-7.10.tar.gz
postgresql-unit-7.10.tar.gz
概览
| 扩展包名 | 版本 | 分类 | 许可证 | 语言 |
|---|---|---|---|---|
pgunit | 7.10 | TYPE | GPL-2.0 | C |
| ID | 扩展名 | Bin | Lib | Load | Create | Trust | Reloc | 模式 |
|---|---|---|---|---|---|---|---|---|
| 3520 | unit | 否 | 是 | 否 | 是 | 否 | 否 | - |
| 相关扩展 | plpgsql pgmp numeral prefix semver pgpdf pglite_fusion md5hash asn1oid |
|---|
版本
| 类型 | 仓库 | 版本 | PG 大版本 | 包名 | 依赖 |
|---|---|---|---|---|---|
| EXT | PGDG | 7.10 | 1817161514 | pgunit | plpgsql |
| RPM | PGDG | 7.10 | 1817161514 | postgresql-unit_$v | - |
| DEB | PGDG | 7.10 | 1817161514 | postgresql-$v-unit | - |
安装
您可以直接安装 pgunit 扩展包的预置二进制包,首先确保 PGDG 仓库已经添加并启用:
pig repo add pgdg -u # 添加 PGDG 仓库并更新缓存
使用 pig 或者是 apt/yum/dnf 安装扩展:
pig install pgunit; # 当前活跃 PG 版本安装
pig ext install -y pgunit -v 18 # PG 18
pig ext install -y pgunit -v 17 # PG 17
pig ext install -y pgunit -v 16 # PG 16
pig ext install -y pgunit -v 15 # PG 15
pig ext install -y pgunit -v 14 # PG 14
dnf install -y postgresql-unit_18 # PG 18
dnf install -y postgresql-unit_17 # PG 17
dnf install -y postgresql-unit_16 # PG 16
dnf install -y postgresql-unit_15 # PG 15
dnf install -y postgresql-unit_14 # PG 14
apt install -y postgresql-18-unit # PG 18
apt install -y postgresql-17-unit # PG 17
apt install -y postgresql-16-unit # PG 16
apt install -y postgresql-15-unit # PG 15
apt install -y postgresql-14-unit # PG 14
创建扩展:
CREATE EXTENSION unit CASCADE; -- 依赖: plpgsql
用法
unit 扩展提供了 SI 单位数据类型,可在 SQL 中直接进行量纲分析和单位换算。
CREATE EXTENSION unit;
SELECT '9.81 m/s^2'::unit;
SELECT '120 km/h'::unit @ 'm/s' AS velocity; -- 33.3333333333333 m/s
基本单位
米 (m)、千克 (kg)、秒 (s)、安培 (A)、开尔文 (K)、摩尔 (mol)、坎德拉 (cd)、字节 (B)。
运算符
| 运算符 | 说明 | 示例 |
|---|---|---|
+, - | 加/减(需相同量纲) | '1 m'::unit + '50 cm'::unit |
*, / | 乘/除 | '5 kg'::unit * '9.81 m/s^2'::unit |
^ | 整数次幂 | '2 m'::unit ^ 3 |
@ | 转换单位(返回 unit) | '2 MB/min'::unit @ 'GB/d' |
@@ | 转换单位(返回 double precision) | '1 km'::unit @@ 'm' |
函数
数学函数:sqrt()、exp()、ln()、log2()、cbrt()、asin()、tan() 等。
聚合函数:sum(unit)、avg(unit)、min(unit)、max(unit)、stddev()、variance()。
输入格式
SELECT '3|4 m'::unit; -- 分数:0.75 m
SELECT '10:05:30 s'::unit; -- 时间格式:36330 s
SELECT 'm⁻²'::unit; -- Unicode 上标
单位换算
SELECT '2 MB/min'::unit @ 'GB/d'; -- 2.88 GB/d
SELECT '1 hl'::unit @ '0.5 l'; -- 200 * 0.5 l
SELECT '100 degC'::unit @ 'degF'; -- 华氏温度转换
范围类型
SELECT unitrange('earthradius_polar', 'earthradius_equatorial');
配置
unit.byte_output_iec:二进制前缀(Ki, Mi, Gi)unit.output_base_units:仅显示基本单位unit.time_output_custom:使用分/时/日格式化时间unit.output_superscript:Unicode 上标指数