[英]Reorder a string using REGEXP_REPLACE in a Redshift table
我正在尝试使用正则表达式替换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序列,并在最后一个>
之前放置并保留其余的字符串。
非常感谢您的帮助!
如果您只想查询可以生成此输出的查询,则应执行以下操作:
SELECT
REGEXP_REPLACE(sequence, '999([0-9]{7})$', '$1 > 999')
FROM yourTable
这是一个解决方案(基于Tims),另外
UPDATE yourTable SET sequence = ...
而不是od 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')
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.