我正在尝试使用正则表达式替换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序列,当它出现在字符串的开头,并将它放在最后一个>
之前,并保留剩下的字符串。
非常感谢任何帮助!
答案 0 :(得分:1)
如果您只想要一个可以生成此输出的查询,那么以下内容应该有效:
SELECT
REGEXP_REPLACE(sequence, '999([0-9]{7})$', '$1 > 999')
FROM yourTable
答案 1 :(得分:1)
这是一个解决方案(基于Tims),另外还有
UPDATE yourTable SET sequence = ...
而不是SELECT ... FROM yourTable
$
( > [0-9]{7}){0,}
([0-9]{1,})
代替" 999"并抓住它代码:
UPDATE yourTable SET sequence =
REGEXP_REPLACE(sequence, '([0-9]{1,})([0-9]{7}( > [0-9]{7}){0,})', '$2 > $1')