将NVARCHAR转换为INT跳过不可转换

将NVARCHAR转换为INT跳过不可转换

问题描述:

我需要查询一个数据库,这是专门设计的,以便NVARCHAR列保持客户端的年龄。我想集团客户使用将NVARCHAR转换为INT跳过不可转换

GROUP BY age/10 

但是当引擎遇到一些字符串像'20 .10.1984' (有人进入了他的bithday而不是年龄),我的查询失败。

的“坏”时代的百分比是非常小的,所以我只想跳过记录其年龄是无法转换为INT。

有没有简单的方法来做到这一点?

谢谢!

添加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