Вы можете использовать LIKE
и шаблон, который соответствует любому нецифровому символу.
SELECT question,
CASE
WHEN answer = ''
OR answer LIKE '%[^0-9]%'
answer
ELSE
'NUMERIC_ENTRY'
END answer,
count(*)
FROM survey
WHERE client = 'ABC_Company'
GROUP BY question,
CASE
WHEN answer = ''
OR answer LIKE '%[^0-9]%'
answer
ELSE
'NUMERIC_ENTRY'
END;
(Предполагается, что SQL Server из-за isnumeric()
(который вы также можете использовать, но, как известно,чтобы иногда показывать забавные результаты, я бы предпочел использовать LIKE
).)
Другой вариант, поскольку в SQL Server 2012 используется try_cast()
, чтобы проверить, можно ли преобразовать строку в целое число.
SELECT question,
CASE
WHEN answer = ''
OR try_cast(answer AS integer) IS NULL
answer
ELSE
'NUMERIC_ENTRY'
END answer,
count(*)
FROM survey
WHERE client = 'ABC_Company'
GROUP BY question,
CASE
WHEN answer = ''
OR try_cast(answer AS integer) IS NULL
answer
ELSE
'NUMERIC_ENTRY'
END;