2016-07-21 19 views
0

Ich möchte eine Datenbanktabelle durchsuchen und jede Zeichenfolge, die eine Untersequenz einer anderen Zeichenfolge ist, zurückgeben.So suchen Sie als Untersequenz

Wenn ich will nach einer Zeichenfolge suchen, die auf eine andere Zeichenfolge gleich ist, verwende ich die folgenden:

SELECT kmer from data where kmer="ATCG" 

Unter der Annahme, Kmer = „ATCG“, wird eine Übereinstimmung gefunden werden. Was aber, wenn ich als Teilsequenz suchen wollte? Etwas wie das Folgende:

SELECT kmer from data where kmer in "XXATCGXX" 

Aber offensichtlich ist diese Syntax falsch. Diese Strings sind statisch und ich kann keine Platzhalter mit der LIKE-Syntax verwenden.

Um klar zu sein, eine der folgenden Werte ein Spiel zurückgeben sollte:

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

um nur einige Beispiele zu nennen. Dies sind alles Subsequenzen von "XXATCGXX", also kann ich Wildcats verwenden, um alle diese Möglichkeiten abzudecken?

+0

Warum können Sie nicht verwenden 'LIKE'? Versuchen Sie 'WHERE kmer LIKE '% ATCG%' ' –

+0

Was verwirrt mich über dieses Thema ist, wie soll ich im Voraus wissen, wo man die Joker setzen? Ihr Beispiel würde in diesem einen Fall funktionieren, aber was wäre, wenn meine Zeichenfolge "XXAT" wäre? In diesem Fall würde keine Übereinstimmung gefunden, obwohl es eine Untersequenz von "XXATCGXX" ist. Oder missverstehe ich das Konzept der Joker? – Malonge

+0

Das '%' Wildcard-Zeichen entspricht null oder mehr Zeichen, also glaube ich, dass die Antwort ja ist. –

Antwort

1

LIKE wird in der Regel mit einem Spaltenwert auf der linken Seite, sondern als von Oberst zweiunddreißig erwähnt, können Sie nur den Vergleich umkehren:

SELECT kmer FROM data WHERE 'XXATCGXX' LIKE '%' || kmer || '%'; 
Verwandte Themen