用另一列中的元素替换字符串的第 n 个元素
Replace nth element of a string with the element in another column
如何在 PostgreSQL 中用另一个列值替换字符串元素?
例如:
我的 table 有两列:
element seq
T AAACGGG
G TTTATTT
我想用第一列中提到的元素替换第四个元素。
预期输出:
element seq new_seq
T AAACGGG AAATGGG
G TTTATTT TTTGTTT
谢谢
如果您想要基于正则表达式的解决方案,请使用 REGEXP_REPLACE
:
SELECT
element,
seq,
REGEXP_REPLACE(seq, '^(.{3}).(.*)', '' || element || '') AS new_seq
FROM yourTable;
我们也可以在这里使用 SUBSTRING
作为基本字符串选项:
SELECT
element,
seq,
SUBSTRING(seq, 1, 3) || element || SUBSTRING(seq, 5) AS new_seq
FROM yourTable;
子字符串方法可能优于正则表达式方法,所以如果您真的关心性能,这可能是使用的方法。
您可以使用叠加功能。
SELECT
element,
seq,
overlay(seq placing element from 4 for 1) new_seq
FROM rna;
第一个数字参数是起始字符,第二个是您更改的字符数。
如何在 PostgreSQL 中用另一个列值替换字符串元素?
例如: 我的 table 有两列:
element seq
T AAACGGG
G TTTATTT
我想用第一列中提到的元素替换第四个元素。
预期输出:
element seq new_seq
T AAACGGG AAATGGG
G TTTATTT TTTGTTT
谢谢
如果您想要基于正则表达式的解决方案,请使用 REGEXP_REPLACE
:
SELECT
element,
seq,
REGEXP_REPLACE(seq, '^(.{3}).(.*)', '' || element || '') AS new_seq
FROM yourTable;
我们也可以在这里使用 SUBSTRING
作为基本字符串选项:
SELECT
element,
seq,
SUBSTRING(seq, 1, 3) || element || SUBSTRING(seq, 5) AS new_seq
FROM yourTable;
子字符串方法可能优于正则表达式方法,所以如果您真的关心性能,这可能是使用的方法。
您可以使用叠加功能。
SELECT
element,
seq,
overlay(seq placing element from 4 for 1) new_seq
FROM rna;
第一个数字参数是起始字符,第二个是您更改的字符数。