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

问题张三需要给商品打标签,遇到几个问题。每个商品在原来的数据库中已有一部分标签,并且标签都已经汇总成一个字段,需要将新的标签添加到原有的标签。此外,还有一张表,需要每天更新标签,在更新数据库的时候,需要将旧标签剔除,保证这个标签都是新增的。问题分析新旧标签都是字符串,解决上述问题本质上是现在要对新旧标签进行集合运算,问题 1 使用并集,问题 2 使用差集。解决方法现在新旧标签都是字符串无法直接进行集合运算,需要进行一个转化,首先对标签进行拆分,进行一行转多行的操作,之前在Pytho
摘要由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 
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值