Всего ударов в темноте, но я думаю , что вы ищете:
DECLARE @Count int, @Column sysname;
DECLARE @SQL nvarchar(MAX);
SET @Column = N'SomeColumnName';
SET @SQL = N'SELECT @Count = COUNT(CASE ' + QUOTENAME(@Column) + N' WHEN '''' THEN 1 END) FROM dbo.companies;';
EXEC sp_excutesql @SQL, N'@Count int OUTPUT',@Count = @Count OUTPUT;
SELECT @Count;
Редактировать: обратите внимание, что ''
и NULL
не являются одним и тем же значением; что-то, о чем вы, кажется, не подозреваете, рассматривая где конкатенацию переменной (@Val
типа данных varchar(1)
) со значением NULL
в буквальную строку. NULL + {expr} = NULL
. Если вы хотите сосчитать строки с помощью NULL
, не пустая строка - это IS NULL
(и вам нужно переместить WHEN
).