Разделенные запятыми значения в поле базы данных - PullRequest
6 голосов
/ 10 апреля 2009

У меня есть таблица продуктов. Каждая строка в этой таблице соответствует отдельному продукту и идентифицируется уникальным идентификатором. Теперь каждый продукт может иметь несколько «кодов», связанных с этим продуктом. Например:

Id     |    Code
----------------------
0001   |   IN,ON,ME,OH
0002   |   ON,VI,AC,ZO
0003   |   QA,PS,OO,ME

То, что я пытаюсь сделать, - это создать хранимую процедуру, чтобы я мог передать коды, такие как «ON, ME», и заставить ее возвращать каждый продукт, содержащий код «ON» или «ME». Так как коды разделены запятыми, я не знаю, как их разделить и найти. Это возможно с использованием только TSQL?

Редактировать: Это критически важный стол. У меня нет полномочий его менять.

Ответы [ 11 ]

0 голосов
/ 10 апреля 2009

Это может быть невозможно, если вы застряли с этим дизайном базы данных, но было бы намного проще поместить коды в отдельные записи в другой таблице:

ProductCode
-----------
ProductID (FK to Product.ID)
Code (varchar)

Таблица может выглядеть так:

ProductID    Code
-----------------
0001         IN
0001         ON
0001         ME
...

Запрос будет выглядеть примерно так (вам придется как-то передавать коды - либо как отдельные переменные, либо, возможно, через запятую, разделенную в proc):

select ProductID
from ProductCode
where Code in ('ON', 'ME')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...