У меня есть таблица SQL Server 2016, в которой хранятся два строковых значения, разделенных запятыми, в одной строке, но в разных столбцах. Например,
table1.value_One = "1,2,3,4,5"
и
table1.value_two = "1,3,5,6,7,8,9"
Один столбец - это идентификаторы текущей публикации, которые также хранятся в нормализованной таблице. Мне нужно поместить недвойственный идентификатор в новую таблицу.
Мне нужно добавить только 6,7,8,9 в нормализованную таблицу. В настоящее время в хранимой процедуре я преобразовываю обе строки в строки, а затем сравниваю значения в поисках нулей
SELECT MEMBERID, cs.Value --SplitData
INTO #Temp2
FROM [ADMIN_API_Master_Members_List]
CROSS APPLY STRING_SPLIT ('1,2,3,4,5', ',') cs
WHERE MEMBERID = 1000
и
SELECT MEMBERID, cs.Value --SplitData
INTO #Temp1
FROM [ADMIN_API_Master_Members_List]
CROSS APPLY STRING_SPLIT ('1,3,5,6,7,8,9', ',') cs
WHERE MEMBERID = 1000
Затем беру новые значения и помещаю их в другоеtmp table перед вставкой в основной стол.
SELECT dbo.Temp2.Value
INTO #Temp3
FROM dbo.Temp2
LEFT OUTER JOIN dbo.Temp1 ON dbo.Temp2.Value = dbo.Temp1.Value
WHERE (dbo.Temp1.Value IS NULL)
Должен быть более эффективный способ, чем то, что я делаю. Любая помощь приветствуется