SQL Server 2005将VARCHAR转换为INT,但默认为无效类型
发布时间:2020-05-24 12:22:26 所属栏目:MsSql 来源:互联网
导读:我在表中有一个varchar(100)列,它包含整数(作为字符串)和非整数字符串的混合.例如. | dimension varchar(100) || 5 || 17 || 3 || Pyramids || Western Bypass
|
我在表中有一个varchar(100)列,它包含整数(作为字符串)和非整数字符串的混合.例如. | dimension varchar(100) | | '5' | | '17' | | '3' | | 'Pyramids' | | 'Western Bypass' | | '15' | 我怎样才能写一个表达式,例如总结所有有效整数的值?如果我尝试: -- should return 5 + 17 + 3 + 15 = 40
SELECT
SUM( CONVERT( INT,dimension ) )
FROM
mytable
将varchar值’Pyramids’转换为数据类型int时,我会收到转换失败.错误. 是否有我可以在我的表达式中使用的测试,就像ISNULL()函数一样,如果字段不是数字,它允许我指定默认值? 解决方法试试这个:SELECT
SUM(CASE ISNUMERIC(dimension)
WHEN 1 THEN CONVERT( INT,dimension )
ELSE 0
END)
FROM
mytable
CASE应检查维度是否为数字 – 如果是,则返回该值.如果它不是数字,则返回默认值(此处:0) 您是否需要经常查询,还可以向表中添加一个持久的计算列,该列封装此计算并存储该值.这样,当求和等等时,你并不总是重新计算这个值: ALTER TABLE mytable
ADD NumericValue AS CASE ISNUMERIC(dimension)
WHEN 1 THEN CONVERT( INT,dimension ) ELSE 0 END PERSISTED
现在,您可以选择维度,numericvalue FROM mytable并获取这两个值,而无需执行任何计算. (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 如何知道ScalaQuery中是否存在数据库表
- sql-server – 更新用户取消的查询
- sql-server – Visual Studio 2012中数据库资源管理器中的M
- sql-server – Sql Server 2000 – 如何找出当前正在运行的
- SQL Server 缓存命中和缓存未命中amp;缓存与缓冲间的差异
- SQL Server在数据库中自动生成编号的简单示例
- sql-server – 规范化SQL Server中的unicode字符串?
- sql – postgres:用户真正在做什么’select *’是什么?
- SQL Server 2005:使用单个查询插入多行
- 使用SQL Server表值参数(TVP)作为存储过程参数需要什么权限
