# Abfrage mit mehreren Werten in einer Zelle



## Fragenfrager (29. Mai 2013)

Hallo liebes Forum, 

mir ist folgende Tabelle vorgesetzt worden:
Benutzername | zugeordneteGruppe

Der "Benutzername" ist dabei eindeutig. In der "zugeordneteGruppe" jedoch sind alle Gruppen aufgeführt, denen der User angehört.
Leider ist die Darstellung sehr unschön, denn der Eintrag sieht z.B. so aus:
Testuser|43~52~53~44~168~64~
Testuser2|44~51~53~41~162~64~


Der Aufbau in  zugeordneteGruppe" ist also immer Gruppennummer (1-3 stellig), gefolgt von ~.

Ich benötige nun eine Abfrage, die mir alle Benutzernamen bringt, die beispielsweise in der Gruppe 53 sind.
Die Abfragesprache ist MSSQL.
Und nein, ich kann den Aufbau der Datenbank leider nicht ändern


----------



## Fragenfrager (29. Mai 2013)

Okay, es hilft tatsächlich wenn man bei Schreiben seine Gedanken nochmal ordnet.
Ich mache das jetzt so:

```
SELECT   
Benutzername     
from
tabelle
where 
zugeordneteGruppe like '%53~%' 
order by BenutzerName
```
Die gesuchte Gruppennummer ergänze ich vorher über php um das ~.
Danke für's zuhören.


----------



## Yaslaw (29. Mai 2013)

Sie an, der Fragenfrager....
Alle SQL sind nicht getestet - hab noch nie mit MS SQL gearbeitet - und somit nur Ideen

Setze dein String nochmals in ~ damit jede Zahl mit ~ umgeben ist. Diesen String kannst du dann mit LIKE gegen ~gesuchte_zahl~ vergleichen

```
WHERE '~' + zugeordneteGruppe  LIKE '%~53~%'
/*'~43~52~53~44~168~64~' LIKE '%~53~%'  */'
```

Nachtrag: Unbedingt den ~davor setzen. Ansonsten findet er die 53 auch bei einem Set von '1~2~153~456~'

PS. Gruss gen Norden


----------



## Fragenfrager (29. Mai 2013)

HES zum Dank!
Leider ist es so, dass die erste Zahl kein vorangestelltes ~ hat.
Mit meinem oben beschrieben PHP konnte ich mir aber ein passendes dynamisches Statement bauen.
Gruß nach Süden


----------



## Yaslaw (29. Mai 2013)

Darum habe ich doch den CONCAT (gem. Google bei MS SQL ein +) Hinzugefügt

```
'~' + zugeordneteGruppe
```


----------

