я работаю над существующей таблицы аудита в SQL serevr 2010. У меня есть следующие строки в каждой строке:SQL-запрос, чтобы разделить одно значение строки в несколько колонок
"UserID: 4| GroupID: 1| GroupParentID: 1| GroupType: 1| RevisedBy: 4|"
из строки. Моего плана, чтобы создать таблицу в следующем формате:
IDName IDs
-------- ----------
UserID 4
GroupID 1
GroupParentID 1
GroupType 1
RevisedBy 4
Наконец я создаю что-то вроде этого: (ссылающееся идентификаторы с их основной таблицей)
IDName IDs
-------- ----------
UserID User1
GroupID Gp1
GroupParentID GG
GroupType type1
RevisedBy User1
Надеется, что это имеет смысл. , пожалуйста, дайте мне знать, как достичь этого с высокой производительностью, так как таблица имеет миллионы строк.
благодаря
я использовал функцию разделения для разделения труб «|».
CREATE FUNCTION dbo.SplitStrings_XML1
(
@List NVARCHAR(MAX),
@Delimiter NVARCHAR(255)
)
RETURNS TABLE
WITH SCHEMABINDING
AS
RETURN
(
SELECT Item = y.i.value('(./text())[1]', 'nvarchar(4000)')
FROM
(
SELECT x = CONVERT(XML, '<i>'
+ REPLACE(@List, @Delimiter, '</i><i>')
+ '</i>').query('.')
) AS a CROSS APPLY x.nodes('i') AS y(i)
);
GO
Но я получаю таблицу с одним столбцом,
UserID: 4
GroupID: 1
GroupParentID: 1
GroupType: 1
RevisedBy: 4
я ищу способы, чтобы расколоть это.
Можете ли вы пост, что вы пробовали? – FutbolFan
Я отредактировал мое сообщение. Пожалуйста, смотрите. – RNat