я таблица, которая содержит поле с разделителями строкой, это на самом деле несортированный список идентификаторыс помощью параметра многозначного с разделителями строки в наборе данных
id| name | valueslist
----------------------------------------------
1 | John | 46423423,36456325,76473234,98798796
2 | Mike | 36456325,98798796
3 | Sara | 46423423
У меня есть параметр мульти-значение, основанный на наборе данных, в котором перечислены все возможные идентификаторы
param: @chosenvalues
possible values:
46423423
36456325
76473234
98798796
Теперь, при выборе или более идентификаторов в параметре, я хочу, чтобы вернуть все записи из моей таблицы, которые имеют значение, что присутствующие в их valueslist.
например:
If I select 36456325 I need John & Mike to be returned
If I select 46423423 I need John & Sara to be returned
If I select 46423423 & 98798796 I need all three to be returned
Я думал, что я мог бы решить эту проблему, как
SELECT * FROM table WHERE '%' + valueslist + '%' IN ('%' + @chosenvalues + '%')
, но это не работает. Любые предложения относительно того, как я могу это решить?
ТИА,
Henro
редактировать: Я знаю, что это на самом деле далеко от идеального моделирования, но, к сожалению, это то, что я должен работать.
Вы должны исправить структуру данных, чтобы иметь турный ионный стол. SQL имеет эту отличную структуру данных для хранения списков вещей - она называется таблицей, а не строкой. –
Невероятно, как часто появляются эти типы вопросов. Плохое моделирование данных - это корень всего зла! – Dan