将一列分为两列,然后将新列与其他表

时间:2018-02-09 10:57:34

标签: sql postgresql

我有一个有三张桌子的数据库。

  1. “广告系列”表格中包含“广告系列编号”列(例如,值= 1
  2. “付款”表格中包含“user_id”列(例如,值= 134356
  3. “User_Source”表格中有一栏“转储”,其中包含用户ID和广告系列号info_u134356_cpn_1info_cpn_1_u134356
  4. 我需要从user_source中的合并值中划分数据,这样我就可以在一个表格中看到user_id及其关联的广告系列号码,然后计算每个广告系列的用户数量。

    我无法理解分裂列的方式,以及是否有办法不进行吐痰(例如以某种方式过滤)。

    我目前正在使用DataGrip。

1 个答案:

答案 0 :(得分:0)

您可以在Postgres中使用regexp_match()

with sample (dump) as (
   values 
    ('info_cpn_1_u134356'),
    ('info_u456789_cpn_5')
)
select (regexp_match(dump, 'u([0-9]+)'))[1] as user_id, 
       (regexp_match(dump, 'cpn_([0-9]+)'))[1] as campaign
from sample;

返回:

user_id | campaign
--------+---------
134356  | 1       
456789  | 5