2016-11-24 3 views
-1

In einer meiner Tabellen speichern ich GroupIDs in einem Format von: '2 # 3 # 5' was bedeutet, dass ein Benutzer zu den Gruppen 2, 3 und 5 gehört. Wie kann ich meine Abfrage zu Status g ändern. Gruppennummer IN (2,3,5)? Wo es wird 2,3,5 VONVerwenden von SQL split

SELECT GroupIDs FROM BW_Staff WHERE StaffCode = '' 

// Ausgabe: 2 # 3 # 5

g.GroupID IN (2, 3, 5) 2, 3, 5 Werte sein muss von dieser Abfrage, so muss es von Hash geteilt werden?

SELECT g.Name, u.StaffCode, SUBSTRING(u.Perms, 47, 1) AS Staff_Perm_Grant, 
     SUBSTRING(g.Perms, 47, 1) AS Group_Perm_Grant 
FROM BW_Groups g, 
    BW_Staff u 
WHERE g.GroupID IN (2, 3, 5) and u.StaffCode = 'KAA' 

Dank für jede Hilfe

+1

Tag des dbms Sie verwenden. (Einige nicht-ANSI SQL dort ...) – jarlh

+0

Keine Beitrittsbedingung? Fügen Sie Beispieltabellendaten und das erwartete Ergebnis hinzu - auch formatierten Text. – jarlh

+3

Das klingt nach einem sehr schlechten Design. – walther

Antwort

0

Trotz der Tatsache, dass es wahrscheinlich eine schlecht gestaltete Datenbank (Sie sollen einen ‚Gruppen‘ Tisch mit einem many-to-many Verhältnis zu dem ‚Personal‘ Tabelle wurden die Schaffung), so können Sie beitreten beide.

Es ist möglich, die Zeichenfolge in SQL Server 2016 unter Verwendung string_split(<field>, <delimiter>) zu teilen. How to split a comma-separated value to columns

In MySQL haben Sie kein Glück, aber es ist möglich, eine Funktion zu erstellen, das Gleiche zu tun: How to split the name string in mysql?