Вставка массива в таблицу SQL Server - PullRequest
2 голосов
/ 06 декабря 2011
create proc InsertTagsForArticle(@ArticleID int, @TagIDsList nvarchar(max))
as
--...........

Параметр @TagsList содержит идентификаторы тегов, разделенные запятой: "18,22, 23". Как более рационально вставить эти идентификаторы в таблицу?

РЕДАКТИРОВАТЬ: Вопрос в том, как вставить массив в таблицу сервера SQL, а не в том, как анализировать массив. Это что-то вроде foreach оператора.

Ответы [ 2 ]

1 голос
/ 06 декабря 2011

Поскольку сервер SQL не поддерживает собственные массивы, вы не можете ничего сделать.

  • Сериализуйте этот массив и сохраните в поле.
  • Создать дочернюю таблицу / отношения и хранить там отдельные записи.

Ваши требования будут определять, что лучше для вас. Но обычно нормализованный подход работает лучше.

1 голос
/ 06 декабря 2011

Вы должны использовать, например, пользовательская функция, которая разбивает строку через запятую в таблицу - см., например, здесь:

Помощник SQL Server - значение в таблице, разделенное запятыми

или много больше доступных на межсетях - просто Google или Bing для "разбить строку через запятую на таблицу", и вы получите тысячи просмотров ....

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