将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