Конвертировать NVARCHAR в INT, пропуская не конвертируемые - PullRequest
0 голосов
/ 18 ноября 2008

Мне нужно запросить базу данных, которая разработана таким образом, чтобы столбец NVARCHAR сохранял возраст клиентов. Я хочу, чтобы групповые клиенты использовали

GROUP BY age / 10 

но когда движок встречает какую-то строку, например '20 .10.1984 '(кто-то ввел свой день рождения вместо возраста), мой запрос не выполняется.

Процент «плохих» возрастов очень мал, поэтому я хочу просто пропустить записи, возраст которых не конвертируется в INT.

Есть ли простой способ сделать это?

Спасибо!

1 Ответ

4 голосов
/ 18 ноября 2008

Добавить WHERE IsNumeric (возраст) = 1

Как это:

CREATE TABLE #temp (age NVARCHAR(20))

INSERT INTO #temp
    SELECT '22'
    UNION
SELECT '24'
    UNION
SELECT '20.10.1984'
    UNION
SELECT '50'

SELECT age/10, COUNT(*)
    FROM #temp
    WHERE ISNUMERIC(age) = 1
    GROUP BY age/10

DROP TABLE #temp   
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...