Поле с запятой в базе данных - PullRequest
1 голос
/ 11 сентября 2011

У меня есть база данных с полем, разделенным запятыми.

По сути, я хочу иметь возможность легко искать по полям.

ID    Value
1     1,2,3
2     2,3,4
3     2,3,1
4     1

Например, как запросить базу данных и получить идентификатор поля базы данных и значение для любых значений, которые имеют «1» против значения. Это должно вернуть ID 1,3 и 4.

Ответы [ 3 ]

8 голосов
/ 11 сентября 2011

Если вы не можете исправить свой дизайн (см. Хранение значений множественного выбора в базе данных )

...
WHERE
   ',' + field + ',' LIKE '%,1,%'

Редактировать: также см. Хранение массивов в базе данных для другой критики этого дизайна

2 голосов
/ 11 сентября 2011
SELECT ID FROM Table WHERE ',' + Value + ',' LIKE '%,@value,%'

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

Редактировать: Исправил запрос, @gbn заметил что-то, чего я не сделал ...

0 голосов
/ 12 сентября 2011

выберите идентификатор из таблицы, где charindex (1, значение)> 0

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...