我在表中有一个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时,我会收到转换失败.错误.
解决方法
试试这个:
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并获取这两个值,而无需执行任何计算.
原文地址:https://www.jb51.cc/mssql/77828.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。