isn

用于国际产品编号标准的数据类型

概览

扩展包名版本分类许可证语言
isn1.2TYPEPostgreSQLC
ID扩展名BinLibLoadCreateTrustReloc模式
3930isn-
相关扩展prefix semver unit pgpdf pglite_fusion md5hash asn1oid roaringbitmap

版本

PG18PG17PG16PG15PG14
1.21.21.21.21.2

安装

提示:这是 PostgreSQL 内核自带的 contrib 扩展

CREATE EXTENSION isn;

用法

isn: ISBN、ISSN、EAN、UPC 产品编号类型

isn 扩展提供了符合国际产品编号标准的数据类型,支持验证和校验位核验。

CREATE EXTENSION isn;

数据类型

类型描述
EAN13欧洲商品编码(始终为 13 位)
ISBN13国际标准书号(13 位)
ISMN13国际标准音乐号(13 位)
ISSN13国际标准连续出版物号(13 位)
ISBN书号(可能时使用 10 位短格式)
ISMN音乐号(可能时使用 10 位短格式)
ISSN连续出版物号(可能时使用 10 位短格式)
UPC通用产品代码

示例

SELECT isbn('978-0-393-04002-9');
SELECT isbn13('0901690546');
SELECT issn('1436-4522');

-- 创建带 ISBN 列的表
CREATE TABLE books (id isbn);
INSERT INTO books VALUES ('9780393040029');

-- 使用 ? 自动计算校验位
INSERT INTO books VALUES ('220500896?');

-- 类型转换
SELECT ean13('0901690546'::isbn);

弱模式

启用弱模式可接受无效校验位(适用于 OCR/数据清理场景):

SET isn.weak TO true;
INSERT INTO books VALUES ('978-0-11-000533-4');
SET isn.weak TO false;

-- 查找无效条目
SELECT id FROM books WHERE NOT is_valid(id);

-- 修复无效条目
UPDATE books SET id = make_valid(id) WHERE id = '2-205-00876-X!';

函数

函数描述
is_valid(isn)检查值是否具有有效校验位
make_valid(isn)清除无效校验位标志
isn_weak()返回当前弱模式状态
isn_weak(boolean)设置弱模式

运算符与索引

支持标准比较运算符(=<><=>=<>),以及 B-tree 和 Hash 索引。


最后修改 2026-03-12: update extension pages (f579993)