试试这个:
SELECT
SUM(CASE ISNUMERIC(dimension)
WHEN 1 THEN CONVERT( INT, dimension )
ELSE 0
END)
FROM
mytable
CASE应检查是否dimension
为数字-如果是,则返回该值。如果不是数字,则返回默认值(此处:0)
是否需要经常查询,也可以向表中添加一个持久化的计算列,该列封装了该计算并存储了值。这样,在进行求和等操作时,您不必总是重新计算值:
ALTER TABLE mytable
ADD NumericValue AS CASE ISNUMERIC(dimension)
WHEN 1 THEN CONVERT( INT, dimension ) ELSE 0 END PERSISTED
现在,您可以SELECT dimension, numericvalue FROM mytable
获取两个值,而不必执行任何计算。