Существуют ли какие-либо встроенные функции SQL Server 2005 для сериализации / десериализации строковых параметров в таблице? - PullRequest
0 голосов
/ 04 декабря 2009

Большой вопрос в том, существуют ли какие-либо "встроенные" функции SQL Server 2005 для сериализации / десериализации строковых параметров в переменных таблицы? Остальное объясняет мою необходимость далее, но, возможно, не является необходимым. *

У меня есть SQL SP, я бы хотел провести рефакторинг. В настоящее время он принимает пять идентификаторов клиентов и пять наборов идентификаторов заказов, относящихся к этим клиентам. (один ко многим).

Я хотел бы изменить параметры, чтобы выбрать один или несколько идентификаторов клиентов, каждый из которых имеет один или несколько идентификаторов заказа.

Список идентификаторов клиентов будет прост, потому что вы можете указать строку «1,3,5,77,21», затем dbo.split (@customer, ',') (затем isnumeric () и convert (int) ..)

Страницы были бы более сложными. Моя первая мысль - это строка типа «[1, 3, 5], [2, 4, 6], [2, 4, 6]». Конечно, я мог бы обмануть и сделать двойной dbo.split () на что-то вроде «1,3,5 | 2,4,6 | 2,4,6». Однако я хотел бы что-то более гуманизированное и стандартное, может быть, XML?

Ответы [ 2 ]

1 голос
/ 04 декабря 2009

Используя пользовательские табличные выражения (CTE), вы можете намного проще преобразовать список в таблицу. Возможно, вы сможете адаптировать этот шаблон для создания вложенных данных, которые вы рассматриваете.

DECLARE
    @cust_list  VARCHAR(1000)

SET @cust_list = '111,222,333,444,555'

;WITH cust_tbl(i,j)
AS
(
    SELECT  i = 1,
            j = CHARINDEX (',', @cust_list + ',')
    UNION ALL
    SELECT  i = j + 1,
            j = CHARINDEX (',', @cust_list + ',', j + 1)
      FROM  cust_tbl
     WHERE  CHARINDEX (',', @cust_list + ',', j + 1) <> 0
)
SELECT  SUBSTRING(@cust_list, i, j - i) AS CustId
  FROM  cust_tbl
GO

CustId
-------
111
222
333
444
555

(5 row(s) affected)
1 голос
/ 04 декабря 2009

Почему бы не попробовать использовать тип данных XML

Понимание типа данных XML SQL Server 2005

и

Поддержка XML в Microsoft SQL Server 2005

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