1. 插件isn简介¶
插件isn为下列国际产品编号标准提供数据类型EAN13、UPC、ISBN(图书)、ISMN(音乐)以及ISSN(期刊)。
在输入时会按照一个硬编码的前缀列表对输入进行验证,这个前缀的列表也被用来在输出时连接号码。
因为新的前缀总是不时地出现,这个前缀列表可能会过时。
这个模块的一个未来版本有希望得到一个来自于一个或多个表的前缀列表,这样用户可以根据需要来方便地更新前缀列表。
不过,在当前该列表只能通过修改源代码并且重新编译来更新。
另外一种方案是,这个模块的未来版本中可能会直接移除前缀验证和连接支持。
-
插件名为 isn
-
插件版本 V1.2
2. 插件isn加载方式¶
使用时需要在命令行执行create extension isn;
3. 插件isn的参数配置¶
无需配置任何参数
4. 插件isn的使用方法¶
加载插件isn后,按照如下方式使用相应功能。
4.1. 数据类型¶
如下表所示:
数据类型 | 描述 |
---|---|
EAN13 | 欧洲文章号,总是以EAN13格式显示 |
ISBN13 | 国际标准图书号,以新的EAN13格式显示 |
ISMN13 | 国际标准音乐号,以新的EAN13格式显示 |
ISSN13 | 国际标准期刊号,以新的EAN13格式显示 |
ISBN | 国际标准图书号,以旧的短格式显示 |
ISMN | 国际标准音乐号,以旧的短格式显示 |
ISSN | 国际标准期刊号,以旧的短格式显示 |
UPC | 通用产品代码 |
4.2. 造型¶
isn模块提供了下列类型之间的造型:
ISBN13 <=> EAN13 ISMN13 <=> EAN13 ISSN13 <=> EAN13 ISBN <=> EAN13 ISMN <=> EAN13 UPC <=> EAN13 ISBN <=> ISBN13 ISMN <=> ISMN13 ISSN <=> ISSN13
当从EAN13造型为另一种类型时,会有对该值是否在另一种类型的域中的运行时检查,如果不在则抛出一个错误。其他的造型则是简单地重新贴个标签,因而总是会成功。
4.3. 函数和操作符¶
函数如下表所示:
函数 | 描述 |
---|---|
述is_weak(boolean) return boolean | 设置弱输入模式(返回新设置)。 |
isn_weak() return boolean | 得到弱模式的当前状态。 |
make_valid(isn) return isn | 验证一个非法号码(清除非法标志)。 |
is_valid(isn) return boolean | 检查非法标志的存在。 |
弱模式被用来允许插入非法数据到一个表中。非法意味着校验位错误,而不是有丢失号码。
为什么你会想要使用弱模式?你可能有一个巨大的ISBN号码集合并且出于某种奇怪的原因其中具有错误的校验位。
当你使用弱模式在一个表中插入非法号码时,被插入的号码将会被加上修正过的校验位,但是它的最后将会有一个'!'。例如0-11-000322-5!。这种非法标志符可以用is_valid函数检查并且可以用make_valid函数清除。
即使不在弱模式中,你也能通过在号码某位追加!字符来强制非法号码的插入。
另一个特殊特性是输入过程中,你可以写一个?代替校验位,然后正确的校验位将被自动插入。
4.4. 示例¶
--直接使用类型 select isbn('978-0-393-04002-9'); select isbn13('0901690546'); select issn('1436-4522'); --转换类型 select upc(ean13('022-035648348-1')); select ean13(upc('220356483481')); --创建一个表,它有一个单一列来保存ISBN号码 create table test(id isbn); INSERT INTO test VALUES('9780393040029'); --自动计算校验位 INSERT INTO test VALUES('220500896?'); INSERT INTO test VALUES('978055215372?'); select issn('3251231?'); select ismn('979047213542?'); --使用弱模式 SELECT isn_weak(true); INSERT INTO test VALUES('978-0-11-000533-4'); insert into test values('2-205-00876-X'); select isn_weak(false); select id from test where not is_valid(id); update test set id = make_valid(id) where id = '2-205-00876-X!'; select * from test; select isbn13(id) from test;
5. 插件isn卸载方法¶
不需要使用插件时执行指令drop extension isn即可。
6. 插件isn升级方法¶
isn扩展插件通常随KingbaseES安装包一并升级。通常情况下用户无须单独升级些插件。