gpt4 book ai didi

sql - 在 Redshift 表中使用 REGEXP_REPLACE 对字符串重新排序

转载 作者:行者123 更新时间:2023-12-02 20:41:22 26 4
gpt4 key购买 nike

我正在尝试使用正则表达式替换 Redshift 表中的模式。我一直在尝试使用 REGEXP_RELACE 但到目前为止没有成功。

我的数据,列名称为 sequence 和 varchar 数据类型,如下所示:

1420311 > 1380566 > 1380566 > 9991380564  
1489773 > 9991489773
1367309 > 1367309 > 9991367309

我想在 SQL Redshift 中使用 REGEXP_RELACE(或任何其他函数)来获得以下结果:

1420311 > 1380566 > 1380566 > 1380564 > 999
1489773 > 1489773 > 999
1367309 > 1367309 > 1367309 > 999

这就是找到出现在字符串开头的 999 序列,并将其放在最后一个 > 前面,并维护剩余的字符串。

非常感谢任何帮助!

最佳答案

这是一个解决方案(基于 Tims),另外

  • 更新数据库内容,
    UPDATE yourTable SET sequence = ... 而不是 od SELECT ... FROM yourTable
  • 在任何成员的开头查找“999”,并允许换行符前有空格,
    没有$
  • 将其移动到序列的最后,
    在第二个捕获组内使用 ( > [0-9]{7}){0,}
  • 找到任何违反 7 位规则的前导数字组,而不仅仅是“999”,
    使用 ([0-9]{1,}) 代替“999”并捕获它

代码:

UPDATE yourTable SET sequence =
REGEXP_REPLACE(sequence, '([0-9]{1,})([0-9]{7}( > [0-9]{7}){0,})', '$2 > $1')

关于sql - 在 Redshift 表中使用 REGEXP_REPLACE 对字符串重新排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46020816/

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