ORACLE数据库两个字段之间进行字符串运算 自定义函数 求交集、并集、差集

在Oracle数据库中,为了解决商品标签的并集和差集问题,文章详细介绍了如何分析和解决字符串集合运算的问题。通过自定义函数,实现了对字符串标签的拆分和集合运算,简化了操作流程。函数包括计算并集和差集的方法,使用LISTAGG函数和字符串连接操作。最终,这些自定义函数成功地解决了在数据库中处理新旧标签集合的问题。
摘要由CSDN通过智能技术生成

问题

张三需要给商品打标签,遇到几个问题。

  1. 每个商品在原来的数据库中已有一部分标签,并且标签都已经汇总成一个字段,需要将新的标签添加到原有的标签。

  2. 此外,还有一张表,需要每天更新标签,在更新数据库的时候,需要将旧标签剔除,保证这个标签都是新增的。

问题分析

新旧标签都是字符串,解决上述问题本质上是现在要对新旧标签进行集合运算,问题 1 使用并集,问题 2 使用差集。

解决方法

现在新旧标签都是字符串无法直接进行集合运算,需要进行一个转化,首先对标签进行拆分,进行一行转多行的操作,之前在Python中介绍过,这里我们使用数据库中的操作

SELECT DISTINCT
    REGEXP_SUBSTR('a;b;c', '[^;]', 1, LEVEL ) TAG 
FROM
    DUAL CONNECT BY LEVEL <= REGEXP_COUNT ( 'a;b;c', '[^;]' )

结果如下:

TAG
a
b
c

可以看到标签已经被拆分成多个了,只需要将新旧标签都拆分成这样的表格,再通过JOIN进行集合运算,得到想要的结果

这里就不展开来说了,比较繁琐,如果这个需求经常用的话,感觉很麻烦,这里我想用一个自定义一个函数解决上述问题,使用起来就方便多了。

字符串集合运算


CREATE OR REPLACE FUNCTION GET_UNIQN_STRING (ori_string IN VARCHAR2, new_string IN VARCHAR2, delimiter IN VARCHAR2 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值