You can try to use STRING_SPLIT
function split your data, then write a subquery in where
clause.
STRING_SPLIT ( string , separator )
SELECT [FirstName]
,[Surname]
,[Number]
,[Email]
FROM customers
where accountid IN (select value from STRING_SPLIT(@accountIdlist,','))
order by ID desc
I will recommend you use exists
SELECT [FirstName]
,[Surname]
,[Number]
,[Email]
FROM customers
where exists (select 1
from STRING_SPLIT(@accountIdlist,',')
where accountid = value
)
sqlfiddle:https://dbfiddle.uk/?rdbms=sqlserver_2017&fiddle=bdeebda14bc88f303a7c5c5752c36039
EDIT
If your sql-server version didn't support STRING_SPLIT
you can write SPLIT
by yourself.
Here is a sample for you.
CREATE FUNCTION dbo.Spite_String (@input varchar(max),@Split char(1))
RETURNS @rtnTable TABLE
(
Value varchar(1000)
)
AS
BEGIN
DECLARE @XmlData xml;
SELECT @XmlData = CONVERT(xml,'<root><s>' + REPLACE(@input,@Split,'</s><s>') + '</s></root>');
insert into @rtnTable (Value)
SELECT [Value] = T.c.value('.','varchar(1000)')
FROM @XmlData.nodes('/root/s') T(c)
return
END
then you can use like
SELECT [FirstName]
,[Surname]
,[Number]
,[Email]
FROM customers
where exists (select 1
from Spite_String(@accountIdlist,',')
where accountid = value
)
sqlfiddle:https://dbfiddle.uk/?rdbms=sqlserver_2017&fiddle=debc6857a970c892f175307e3e840877