To do it on server side:
DECLARE @storedValues TABLE(myValues NVARCHAR(30))
DECLARE @selectedValues TABLE(myValues NVARCHAR(30))
INSERT INTO @storedValues (myValues)
VALUES('1,2,3,4')
INSERT INTO @selectedValues (myValues)
VALUES('2,3,4,5')
DECLARE @storedNumbers TABLE(myNumber INT)
DECLARE @selectedNumbers TABLE(myNumber INT)
;WITH stVal AS
(
SELECT LEFT(myValues, CHARINDEX(',',myValues)-1) AS myVal, RIGHT(myValues, LEN(myValues) - CHARINDEX(',',myValues)) AS Remainder
FROM @storedValues
WHERE CHARINDEX(',',myValues)>0
UNION ALL
SELECT LEFT(Remainder, CHARINDEX(',',Remainder)-1) AS myVal, RIGHT(Remainder, LEN(Remainder) - CHARINDEX(',',Remainder)) AS Remainder
FROM stVal
WHERE CHARINDEX(',',Remainder)>0
UNION ALL
SELECT Remainder AS myVal, NULL AS Remainder
FROM stVal
WHERE CHARINDEX(',',Remainder)=0
)
INSERT INTO @storedNumbers (myNumber)
SELECT myVal
FROM stVal
;WITH selVal AS
(
SELECT LEFT(myValues, CHARINDEX(',',myValues)-1) AS myVal, RIGHT(myValues, LEN(myValues) - CHARINDEX(',',myValues)) AS Remainder
FROM @selectedValues
WHERE CHARINDEX(',',myValues)>0
UNION ALL
SELECT LEFT(Remainder, CHARINDEX(',',Remainder)-1) AS myVal, RIGHT(Remainder, LEN(Remainder) - CHARINDEX(',',Remainder)) AS Remainder
FROM selVal
WHERE CHARINDEX(',',Remainder)>0
UNION ALL
SELECT Remainder AS myVal, NULL AS Remainder
FROM selVal
WHERE CHARINDEX(',',Remainder)=0
)
INSERT INTO @selectedNumbers (myNumber)
SELECT myVal
FROM selVal
SELECT myNumber AS DiffNumbers
FROM @selectedNumbers
WHERE myNumber NOT IN (SELECT myNumber FROM @storedNumbers)
SELECT myNumber AS DiffNumbers
FROM @storedNumbers
WHERE myNumber NOT IN (SELECT myNumber FROM @selectedNumbers)
SELECT myNumber AS DiffNumbers
FROM @selectedNumbers
WHERE myNumber NOT IN (SELECT myNumber FROM @storedNumbers)
UNION ALL
SELECT myNumber AS DiffNumbers
FROM @storedNumbers
WHERE myNumber NOT IN (SELECT myNumber FROM @selectedNumbers)
In above example i used:
Common Table Expressions[
^],
WITH common_table_expression (Transact-SQL)[
^]