DNA序列的reverse complement
是通过将字母A与T互换而将C与G互换而形成的第一步,然后颠倒整个拼写序列。例如,ACCTGAG的reverse
为GAGTCCA(仅通过从末尾开始读取序列),而reverse complement
为CTCAGGT(通过首先交换字母然后反转结果序列)。
如何在SQL Server中获得所需的reverse complement
输出?为了方便起见,我提供以下SQL代码。
DECLARE @seq NVARCHAR(MAX)
SET @seq = 'ACCTGAG'
SELECT @seq AS [Sequence], REVERSE(@seq) AS [Reverse sequence]
---output---
Sequence Reverse sequence
ACCTGAG GAGTCCA
---Desired output---
CTCAGGT
听起来您可以多次使用replace()
和reverse()
:
select @seq,
reverse(replace(replace(replace(replace(replace(replace(replace(replace(@seq, 'A', 'B'
), 'T', 'U'
), 'C', 'D'
), 'G', 'H'
), 'B', 'T'
), 'U', 'A'
), 'D', 'G'
), 'H', 'C'
)
)
Here是db <>小提琴。
这将基数替换为任意字母,然后将其放回相反的值。
如果您正在使用TRANSLATE
,则可以尝试SQL Server 2017
DECLARE @seq NVARCHAR(MAX)
SET @seq = 'ACCTGAG'
SELECT @seq AS [Sequence], REVERSE(@seq) AS [Reverse sequence]
SELECT REVERSE(TRANSLATE(TRANSLATE(@seq,'A','T'), 'C', 'G')) AS Translated
尽管我同意拉努在上面的评论。您的逻辑得出GTGTGGT
。除非误解了您的请求