Вариант 1:
Пришить NOT в текст запроса, в зависимости от состояния p1:
"SELECT * FROM [dbo].[data] WHERE ([dbo].[data].[intField] " + (p1 ? "" : "NOT") + " IN (0,1,2,8,9))"
Вариант 2, если MS SQL поддерживает тип bool в SQL, то такое выражение:
SELECT * FROM [dbo].[data]
WHERE @p1 = true and [dbo].[data].[intField] IN (0,1,2,8,9)
or @p1 = false and [dbo].[data].[intField] NOT IN (0,1,2,8,9)
Вариант 2.1, если MS SQL не поддерживает тип bool в SQL, то нужно p1 придать значение 0/1 вместо false/true, тогда выражение:
SELECT * FROM [dbo].[data]
WHERE @p1 = 0 and [dbo].[data].[intField] IN (0,1,2,8,9)
or @p1 = 1 and [dbo].[data].[intField] NOT IN (0,1,2,8,9)