2016-04-12 8 views
0

Ich muss die Datensätze abrufen, die einen Teil eines gesuchten Werts entspricht.Wie werden die Datensätze abgerufen, die mit einem Teil der Suche übereinstimmen?

The EventsAttended column of the records.

Beschreibung:

Die Spalte im Bild oben hält die Ereignis-IDs, die der Schüler besucht. Alle Ereignisse haben eine entsprechende ID. In meinem VB-Code habe ich die Split()-Funktion verwendet, um den EventsAttended-Spaltenwert mit dem Begrenzer "," zu teilen, und sie werden in ein Array eingefügt.

Was ich brauche:

ich wissen muss, wie ich gonna verwenden eine Abfrage bin ein Datensatz abzurufen, indem ein Teil meiner Suche passen. Es hat einen sehr langen Wert und eine WHERE allein wird nicht den Job machen, weil es den genauen Wert darstellt. Aber in meinem Fall, wie zum Beispiel, möchte ich alle Datensätze, die 77 darin enthält, so wird es die Zeilen 0,6 und 8 zurückgeben, weil sie die 77 haben. Wenn wir zum Beispiel sagen, dass ich alle Datensätze möchte, die 144 und 146 enthält, wird es nur die Zeilen 6 und 8 zurückgeben.

Vielen Dank im Voraus.

+5

Ich würde vorschlagen, diesen abgegrenzten Text nicht in einem einzelnen Feld zu speichern, sondern eine andere Tabelle zu erstellen, die einen Datensatz pro Kombination aus Student und Ereignis enthält. Das macht die Abfrage, nach der Sie jetzt fragen, sehr einfach. Es ist eine falsche Wirtschaft, solche Daten in ein Feld zu stopfen. – jmcilhinney

+0

Vielen Dank für den Vorschlag. Ich habe es einfach so gemacht, weil es für einen Zweck gut funktioniert hat. Aber du hast recht, ich habe damals dasselbe gedacht, als ich herausgefunden habe, wie ich es machen werde und ich kam mit dieser Idee heraus, obwohl es den Job gemacht hat, aber wie du gesagt hast, es ist nicht ideal, aber ich bleibe dran eine für jetzt. :) – BillyD

Antwort

1

Sie mögen können .... Angenommen, Sie möchten serch '77' versuchen

select * 
from my table 
where EventsAttended like ('77,%') 
    or EventsAttended like ('%,77,%') 
    or EventsAttended like (',77%') ; 
+0

Vielen Dank Ich werde dieses später versuchen, sobald ich nach Hause komme. – BillyD

+0

Diese letzte Zeile sollte 'oder EventsAttended like ('%, 77')' sein. – jmcilhinney

+0

Danke @jmcilhinney und _scaisEdge_, es funktioniert genau so, wie ich es wollte wie ein Charme! Ich danke dir sehr. – BillyD

1

können Sie verwenden:

Select * From YourTable Where "," & [EventsAttended] & "," Like "*," & [EventID] & ",*" 

Extrem unwirksam, so hören @jmcilhinney und Redesign das von Grund auf neu.

+0

Danke, ich werde das später versuchen. Ja, ich werde mein System neu gestalten, obwohl ich fast 80% meines Codes rekonstruieren werde, der auf diesem abgegrenzten Textfeld beruht. – BillyD

Verwandte Themen