PG一张表字段作为另一张表参照的正则

文章讨论了如何使用SQL查询来检查两张表(test_product和test_project)中save_date字段与save_year字段的年份对应关系,筛选出不匹配的数据。SQL语句包括INNERJOIN操作和日期格式验证。

目录

1、PG正则匹配

2、使用


1、PG正则匹配

操作符

描述

~

匹配正则表达式,大小写敏感

~*

匹配正则表达式,大小写不敏感

!~

不匹配正则表达式,大小写敏感

!~*

不匹配正则表达式,大小写不敏感

2、使用

需求:校验数据合理性,例如有2张表,校验表A的字段co1是来源了表B的col2。

例如下面的具体需求:

(1)需求1   校验 test_project表的save_year 不是 test_product的sava_date里面的年的数据、

2张数据表,test_product(id,save_date,project_id,...)   test_project(id,save_year,...)

test_product.project_id = test_project.id。  需要校验test_product中的字段save_date,是参照

 test_project表中的save_year字段的年。找出save_date的年和save_year不匹配的数据

sql: 找出save_date的年和save_year不匹配的数据

select A.save_date,A1.save_year FROM gp_toolkit.test_product A inner join gp_toolkit.test_project A1  on A.project_id= A1.id 
where cast(A.save_date as varchar) !~concat( A1.save_year,'-','(\w*)') or A.save_date is null

(2)需求2     找出文件表文件命名不符合规范的数据。  例如文件表file,  作业表表job

file( file_name, id,job_id)

job(id,job_mc,xxx)

文件表file_name 的生成规则,必须要 job_name +'报告‘ + 数字

因此file_name  是正则匹配   

select A.*

FROM file A inner join job  B on A.job_id= B.id 
where cast(A.file_name) !~concat( B.job_name,'报告','^[0-9]*') or A.save_date is null

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

暖兔兔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值