2016-11-24 3 views
-1

В одной из моих таблиц я храню идентификаторы GroupID в формате: «2 # 3 # 5», что означает, что пользователь принадлежит к группам 2, 3 и 5. Как я могу изменить свой запрос в состояние g. GroupID IN (2,3,5)? Где это получение 2,3,5 ОТИспользование SQL split

SELECT GroupIDs FROM BW_Staff WHERE StaffCode = '' 

// Выход: 2 # 3 # 5

g.GroupID В (2, 3, 5) 2, 3, 5 значений должен быть из этого запроса, чтобы его нужно было разделить на хэш?

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' 

спасибо за любую помощь

+1

Tag СУБД вы используете. (Некоторые не ANSI SQL там ...) – jarlh

+0

Нет условия соединения? Добавьте пример данных таблицы и ожидаемый результат - также форматированный текст. – jarlh

+3

Это звучит очень плохо. – walther

ответ

0

Несмотря на то, что это, вероятно, является плохо спроектированная база данных (вы должны создать таблицу «группы» с многие ко многим отношению к столу «штаба»), поэтому вы можете присоединиться к обоим.

Можно разбить строку на SQL Server 2016, используя string_split(<field>, <delimiter>). How to split a comma-separated value to columns

В MySQL у вас нет такой удачи, но это возможно, чтобы создать функцию, чтобы сделать то же самое: How to split the name string in mysql?