gpt4 book ai didi

regex - 使用 regexp_split_to_array 将文本列拆分为 2

转载 作者:行者123 更新时间:2023-11-29 13:24:06 24 4
gpt4 key购买 nike

我在数据库中有一张表。 http://sqlfiddle.com/#!15/48214/1我需要将转储列拆分为 2 - 用户 ID 和事件编号。我已经使用以下代码完成了此操作:

select
substring (dump, ((position('u' in dump))+1),(length(dump)-14)) as user_id,
substring (dump, ((position('p' in dump))+3),1)) as campaign_n from "User_source";

但我需要在一个代码行中使用正则表达式方法来完成。已经研究过此页 http://www.postgresql.org/docs/9.1/static/functions-matching.html#FUNCTIONS-POSIX-REGEXP ,但我对如何正确使用所有这些原子和量词来完成这项特定任务感到有点困惑。将不胜感激任何形式的帮助和解释。

最佳答案

因为你已经把所有的东西都排成一行,所以你不需要使用 regexp_split_to_array。你可以这样做:

select regexp_replace("dump", '.+_u([0-9]+).+', '\1') user_id,
regexp_replace("dump", '.+_cpn_([0-9]+)(.+)?', '\1') cpn
from "User_source";

意义

  1. '.+_u([0-9]+).+' 直到 _u,然后是 _u,任意数字 1 或很多次,之后的任何事情。 “任意数字一次或多次”已分组,因此我可以将其保留在替换 \1
  2. '.+_cpn_([0-9]+)(.+)?' _cpn_ 之前的任何内容,任何数字一次或多次,之后的任何内容如果存在。 “任意数字一次或多次”已分组,因此我可以将其保留在替换 \1

在这里查看它的工作情况:http://sqlfiddle.com/#!15/48214/7

关于regex - 使用 regexp_split_to_array 将文本列拆分为 2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36817162/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com