PG数据库-实现组合枚举

本文讨论了如何在数据库中处理需求,即验证数据表字段的值,这些值由固定枚举值通过分隔符拼接,包括使用`string_to_array`函数指定分隔符和正则表达式匹配不指定分隔符的情况。举例说明了如何检查周一到周三的组合在字段remark中的应用。
摘要由CSDN通过智能技术生成

目录

需求

实现

1、字段指定分隔符

2、字段不指定分隔符


需求

   某个数据表字段的值,只能是一些固定的枚举值,如001,002,003等。如果是固定枚举值的单个值枚举,一般sql就写成col in('001','002','003')。现在需求是,字段内容可能是枚举值的任意值通过分隔符拼接,校验用分隔符split之后的值都在枚举值范围内,即组合枚举、

实现

1、字段指定分隔符

如,字段内容,只可能是'001','002'或者'001,002',那就可以用下面方案:string_to_array(col,指定的分隔符 )<@ arrays['001','002','003']

@>运算符可以用于比较数组的元素是否包含在另一个数组中,比较有大>,<,>=,<=
@>包含是指数组A里有数组B的所有元素,,@< 则相反

组合值枚举,一般会想过Pg的Array函数。

例子:字段可以是周一到周三的任意组合,英文逗号拼接

select * from ogc_cjt1

组合枚举,看remark是周一到周三的任意组合,英文逗号拼接

select * from ogc_cjt1
where string_to_array(remark,',') <@ ARRAY['周一','周二','周三']

2、字段不指定分隔符

考虑用正则。匹配枚举值以及可能的一些分隔符

select * from ogc_cjt1
where remark ~'^[(周一)(周二)(周三)(周四)(周五)(周六)(周日),、,\s]+$'

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值