用SQL的正则处理人名的缩写问题

数据中心的数据在向期刊进行投稿时,通常需要对数据引用有一定的格式变换。比如,Nature Scientific Data期刊,对Data Citation部分的建议是:

1. Lastname1, Initial1., Lastname2, Initial2., … & LastnameN. InitialN. Repository_name Dataset_accession_number_or_DOI (YYYY).

数据中心的数据作者在数据库中是有记录的,其通过一个表存储:

CREATE TABLE datadoi
(
id serial NOT NULL,
doi character varying(250) NOT NULL DEFAULT ''::character varying,
authors text[],
uuid uuid,
author_en text[],
CONSTRAINT datadoi_pkey PRIMARY KEY (id),
CONSTRAINT datadoi_doi_key UNIQUE (doi)
)

 

可以看出,作者是通过一个字符串数据存储。在PostgreSQL中,数组是通过如下形式记录的:

{value1,value2,…}

对于数据的作者信息,数据中心则要求其通过如下的形式记录到数据库中:

Wang Yijia, Zhang Eryi,…

而为了满足期刊的投稿要求,则需要将格式转换为:

Wang Y., Zhang E.,…

在数据库里,最终通过这样的形式进行处理:

select translate(regexp_replace(datadoi.author_en::text,'\s+(\w)\w*"',' \1.','g'),'{}"','')

 

即,将数组转换为字符串,剔除大括号,用逗号区分不同作者,用空格区分作者的姓和名,提取名的首字母,然后全局替换即可。


已发布

分类

,

来自

标签:

评论

《 “用SQL的正则处理人名的缩写问题” 》 有 13 条评论

  1. get androxal generic order

    buy cheap androxal buy uk no prescription

  2. buy enclomiphene cheap alternatives

    enclomiphene fedex without a perscription

  3. rifaximin price canada

    buying rifaximin generic cheapest

  4. buy cheap xifaxan for sale usa

    buy xifaxan australia price

  5. Buy avodart online with overnight delivery

    buy cheap avodart canada price

  6. buy staxyn with saturday delivery

    purchase staxyn generic sale

  7. cheap dutasteride mastercard buy

    get dutasteride cheap genuine

  8. order flexeril cyclobenzaprine cost usa

    how to order flexeril cyclobenzaprine without recipe

  9. buy gabapentin overnight cod

    how to buy gabapentin generic mexico

  10. online order fildena buy online no prescription

    fildena special price

  11. purchase itraconazole generic pricing

    order itraconazole cheap from canada

  12. kanadská online lékárna kamagra

    žádné prescripton kamagra

  13. kamagra fedex de nuit pas cher

    kamagra 25 mg prix

回复 buying xifaxan generic buy online 取消回复

您的邮箱地址不会被公开。 必填项已用 * 标注