An interesting way is to "expand" the list separated by commas, in a table of values:
DECLARE @ListaMenus VARCHAR(255)
SELECT @ListaMenus = '4,5,6,7,8,9,10'
SELECT Split.a.value('.', 'VARCHAR(100)') AS Valor
FROM (
SELECT CAST ('<M>' + REPLACE(@ListaMenus, ',', '</M><M>') + '</M>' AS XML) AS Valores
) AS A
CROSS APPLY Valores.nodes ('/M') AS Split(a);
Basically we convert @ListaMenus
into a XML to then expand each element in a new row. The result would be something like this:
Valor
4
5
6
7
8
9
10
And now nothing prevents us from doing a IN
on this table, for example:
DECLARE @Existe INT
SELECT TOP 1 @Existe = Split.a.value('.', 'VARCHAR(100)')
FROM (
SELECT CAST ('<M>' + REPLACE(@ListaMenus, ',', '</M><M>') + '</M>' AS XML) AS Valores
) AS A
CROSS APPLY Valores.nodes ('/M') AS Split(a)
WHERE CONVERT(INT,Split.a.value('.', 'VARCHAR(100)')) IN (6, 7, 8)
IF @Existe IS NOT NULL BEGIN
PRINT 'Existe!!!'
END
Important : This solution is valid only from SQL 2008