【195】PostgreSQL 14.5 编写SQL从身份证号中查找生日,并且更新生日字段。

假设有一张用户表 t_user ,该表设计如下:

id:  character varying      主键
name: character varying     姓名
idcard: character varying   身份证号
gender: smallint            性别,女是0,男是1
birthday: date              生日

根据身份证号获取生日字符串:

select 
substring(idcard,7,4) || '-' || substring(idcard,11,2) || '-' || substring(idcard,13,2)
from t_user where char_length(idcard)=18;

可以用 date 函数把生日字符串转换成date类型,同时可以检测返回的日期字符串是否正确。

select
date(
substring(idcard,7,4) || '-' || substring(idcard,11,2) || '-' || substring(idcard,13,2)
)
from t_user where char_length(idcard)=18;

根据身份证号更新生日字段

update t_user set 
birthday=date(
    substring(idcard,7,4) || '-' || substring(idcard,11,2) || '-' || substring(idcard,13,2)
)
where char_length(idcard)=18 and birthday is null;

你可能感兴趣的:(数据库,postgresql,sql,数据库)