SQL Server中字符串的反向补码

问题描述 投票:0回答:2

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
sql sql-server reverse
2个回答
0
投票

听起来您可以多次使用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 <>小提琴。

这将基数替换为任意字母,然后将其放回相反的值。


0
投票

如果您正在使用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。除非误解了您的请求

© www.soinside.com 2019 - 2024. All rights reserved.