2016-07-21 11 views
0

私はデータベーステーブルを検索し、別の文字列のサブシーケンスである文字列を返したいと思います。サブシーケンスとして検索する方法

私は別の文字列に等しい文字列を検索したい、私は次のようにします。

SELECT kmer from data where kmer="ATCG" 

マッチが行われます、=「ATCG」kmerと仮定。しかし、もし私がサブシーケンスとして検索したいのであれば?次のようなもの:

SELECT kmer from data where kmer in "XXATCGXX" 

ただし、この構文は間違っています。これらの文字列は静的であり、LIKE構文ではワイルドカードを使用できません。

次のいずれかの値が一致するものを返す必要があり、明確にする:

X 
XX 
XAT 
XATC 
ATC 
TC 
GX 
CGXX 
A 
T 
C 
G 

ほんの一例に名前を付けること。これらはすべて「XXATCGXX」のサブシーケンスですので、これらの可能性をすべて網羅するためにワイルドキャットを使用できますか?

+0

は、なぜあなたは 'LIKE'使用することはできませんか? 'WHERE kmer LIKE '%ATCG%' 'を試してください –

+0

この件について私に混乱を招くのは、ワイルドカードをどこに置くべきかを事前に知っておくことです。あなたの例はこの1つのケースで動作しますが、私の文字列が "XXAT"だったらどうなりますか?その場合、「XXATCGXX」のサブシーケンスであってもマッチングは行われません。あるいは、私はワイルドカードの概念を誤解していますか? – Malonge

+0

'% 'ワイルドカードは0文字以上の文字と一致しますので、答えは「はい」です。 –

答えて

1

LIKEは、一般的に、左側の列の値で使用されますが、大佐は32個で述べたように、あなただけの比較逆転することができます

SELECT kmer FROM data WHERE 'XXATCGXX' LIKE '%' || kmer || '%'; 
関連する問題