2014-11-12 2 views
1

У меня есть две таблицы: Import и ImportItem. Один Import имеет несколько ImportItem. Один ImportItem имеет один Import.Проверить дубликаты в столбце nvarchar таблицы в SQL Server

В моем ImportItem У меня есть столбец CountryIDs. Это NVARCHAR(MAX). Это строка идентификаторов с ; в качестве разделителя, например, так: 3; 4; 5;...

Мне нужно определить дубликаты, на самом деле, если я запускаю дубликат, мне нужно поднять некоторую ошибку. Таким образом, 3; 4; 3; ... 3 является дубликатом.

У меня есть функция разделения (я не пишу эту функцию, мне сказали, чтобы использовать его), который разбивает строку (nvarchar) и возвращает таблицу со столбцами ItemNo и Item (из предыдущего примера будет возвращать 1 для ItemNo и 3 для Item, 2 для ItemNo и 4 для Item.

Мне нужно написать процедуру. Мой вопрос, как я могу перебирать этой колонке CountryIDs для данного ImportItem ID и разделить его и проверить на наличие дубликатов?

ответ

3

Вы можете использовать apply чтобы получить список элементов, что-то вроде этого:

select ii.itemno, s.c, count(*) as cnt 
from importitem ii apply 
    dbo.split(ii.countryids) as s(c) 
group by ii.itemno, s.c 
having count(*) > 1; 

После того, как у вас есть список, вы можете решить, как обрабатывать его в хранимой процедуре.

Смежные вопросы