Sowas wie 'is in' in sql ...?

Hallo Forum,

folgendes Problem:
Ich habe u.a. eine Spalte , in der Strings wie z.B. „TR,TR*,K,N,PS“ stehen.
Ich möchte nun alle Datensätze selektieren, deren ein bestimmtes Kürzel, z.B. „K“ oder „TR*“, enthalten.

Im Internet habe ich leider nur den umgekehrten Fall gefunden:
Die Spalte enthält „K“ und ich selektiere alle Datensätze, deren Spaltenwert in der Liste „TR,TR*,K,N,PS“ enthalten ist …
(http://www.sommarskog.se/arrays-in-sql.html#problem)

Kennt jemand eine Lösung???

Viele Grüße,
piranja

Hallo!
Also, wenn ich Dich richtig verstehe, suchst Du eher so was:
Select pipapo from tabelle
where
wunschstandort like ‚T‘ or ‚TR‘ or… or…
Richtig?
Gruß
Florian

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo!
Also, wenn ich Dich richtig verstehe, suchst Du eher so was:
Select pipapo from tabelle
where
wunschstandort like ‚T‘ or ‚TR‘ or… or…
Richtig?

Jein, ansich schon, aber LIKE würde ja auch „K“ in „MY K , TR“ finden. Soll es aber nicht …

ein wenig Grundwissen schadet nie:
http://www.1keydata.com/sql/sqllike.html

Ähem, ja, in der Tat …! :wink:
Vielen Dank für den Link!

Grüße, piranja

Hi Piranja

Ich habe u.a. eine Spalte , in der
Strings wie z.B. „TR,TR*,K,N,PS“ stehen.
Ich möchte nun alle Datensätze selektieren, deren
ein bestimmtes Kürzel, z.B. „K“ oder
„TR*“, enthalten.

Im Internet habe ich leider nur den umgekehrten Fall gefunden:
Die Spalte enthält „K“ und ich selektiere alle Datensätze,
deren Spaltenwert in der Liste „TR,TR*,K,N,PS“ enthalten ist

Wenn ich es recht verstehe, hilft dir „IN“ nichts, da Du da exakt den Wert spezifieren mußt, den Du suchst.
Und „LIKE“ hilft nicht, weil es in Deinem Fall zu ungenau wird. D.h., eigentlich kann LIKE da schon weiterhelfen, glaube ich. Aber dazu muß ich die Aufgabenstellung erst richtig verstehen.
Also, sehe ich das richtig:
Du hast eine Tabelle, sagen wir mal mit der Spalte XYZ. Und diese Spalte XYZ enthält nun:
Row 1: A,AB,AC
Row 2: B,BA,BD
Row 3: AB,BD,BC,DE

Und Du suchst nun:
„BA“
Row 2 soll also gefunden werden?
Oder…Du suchst:
„AB“
Row 1 und Row 3 werden gefunden?

Wenn ich bis hier hin richtig liege:
Wie ist das in Deinem Beispiel mit dem „…TR*…“ ist der „*“ da als Wildcard zu verstehen?

Viele Grüße
Bonsai

Wenn ich es recht verstehe, hilft dir „IN“ nichts, da Du da
exakt den Wert spezifieren mußt, den Du suchst.
Und „LIKE“ hilft nicht, weil es in Deinem Fall zu
ungenau wird. D.h., eigentlich kann LIKE da schon
weiterhelfen, glaube ich. Aber dazu muß ich die
Aufgabenstellung erst richtig verstehen.
Also, sehe ich das richtig:
Du hast eine Tabelle, sagen wir mal mit der Spalte XYZ. Und
diese Spalte XYZ enthält nun:
Row 1: A,AB,AC
Row 2: B,BA,BD
Row 3: AB,BD,BC,DE

Und Du suchst nun:
„BA“
Row 2 soll also gefunden werden?
Oder…Du suchst:
„AB“
Row 1 und Row 3 werden gefunden?

Hi, ja, korrekt, genau so.

Wenn ich bis hier hin richtig liege:
Wie ist das in Deinem Beispiel mit dem „…TR*…“ ist der „*“
da als Wildcard zu verstehen?

Sorry, der Stern war jetzt etwas verwirrend. Nein, ist keine Wildcard, sondern einfach nur als „normales“ Zeichen zu verstehen.

Ich dachte nach der Antwort von drambeldier nun zunächst, dass LIKE doch mein Problem löst, aber in einigen Tests, die ich gerade gemacht habe, hat es nicht das gewünschte Ergebnis gebracht …

Du hast eine Tabelle, sagen wir mal mit der Spalte XYZ. Und
diese Spalte XYZ enthält nun:
Row 1: A,AB,AC
Row 2: B,BA,BD
Row 3: AB,BD,BC,DE

Und Du suchst nun:
„BA“
Row 2 soll also gefunden werden?
Oder…Du suchst:
„AB“
Row 1 und Row 3 werden gefunden?

Ich dachte nach der Antwort von drambeldier nun zunächst, dass
LIKE doch mein Problem löst, aber in einigen Tests, die ich
gerade gemacht habe, hat es nicht das gewünschte Ergebnis
gebracht …

Warum? Wurden bei der Suche nach „A“ (in meinem Beispiel) wohl alle Rows gefunden?
Hm, irgendwie mußt Du die Kommas in den Strings mit einbinden…

Also, z.B. so:

Where XYZ like 'A,%'
 or XYZ like '%,A'
 or XYZ like '%,A,%'

Das findet „A,“ am Anfang, „,A“ am Ende und „,A,“ in der Mitte.

Ist es das? Würde mich freuen :wink:

lg
Bonsai

1 Like

Ich dachte nach der Antwort von drambeldier nun zunächst, dass
LIKE doch mein Problem löst, aber in einigen Tests, die ich
gerade gemacht habe, hat es nicht das gewünschte Ergebnis
gebracht …

Warum? Wurden bei der Suche nach „A“ (in meinem Beispiel) wohl
alle Rows gefunden?

Nein, leider wurden manche Datensätze nicht gefunden, obwohl sie das Element enthielten. Keine Ahnung warum …

Hm, irgendwie mußt Du die Kommas in den Strings mit
einbinden…

Also, z.B. so:

Where XYZ like ‚A,%‘
or XYZ like ‚%,A‘
or XYZ like ‚%,A,%‘

Das findet „A,“ am Anfang, „,A“ am Ende und „,A,“ in der
Mitte.

Ist es das? Würde mich freuen :wink:

lg
Bonsai

Hm, irgendwie mußt Du die Kommas in den Strings mit
einbinden…

Also, z.B. so:

Where XYZ like ‚A,%‘
or XYZ like ‚%,A‘
or XYZ like ‚%,A,%‘

Das findet „A,“ am Anfang, „,A“ am Ende und „,A,“ in der
Mitte.

So geht’s … Danke dir!