Sql server 新手-使用CAST()和CONVERT()时出错

Sql server 新手-使用CAST()和CONVERT()时出错,sql-server,tsql,casting,Sql Server,Tsql,Casting,我对编程很陌生。我正在学习SQL,并将SS2008作为起点。首先,谢谢你的帮助!这让像我这样的人学习的过程变得容易多了 我读过其他线程,但它们的代码似乎要复杂得多 我将尽可能简单地做到这一点:我正在查询希望对特定列执行求和函数的数据库 目前,列的元数据是varchar类型。我明白,为了能够使用sum函数,所讨论的列必须是int 为了相应地转换列,我认为我可以使用cast/convert函数,但这样做会产生错误: /** CAST:Charge_Pct FROM VARCHAR -> INT

我对编程很陌生。我正在学习SQL,并将SS2008作为起点。首先,谢谢你的帮助!这让像我这样的人学习的过程变得容易多了

我读过其他线程,但它们的代码似乎要复杂得多

我将尽可能简单地做到这一点:我正在查询希望对特定列执行求和函数的数据库

目前,列的元数据是varchar类型。我明白,为了能够使用sum函数,所讨论的列必须是int

为了相应地转换列,我认为我可以使用cast/convert函数,但这样做会产生错误:

/**
CAST:Charge_Pct FROM VARCHAR -> INT
**/


SELECT CAST(Charge_Pct AS NUMERIC(7,7)) 

FROM [Main].[Share_Class_Charges]

WHERE CHARGE_PCT <> 'None'

-- Arithmetic overflow error converting varchar to data type numeric.
/**
CONVERT: Charge_Pct FROM VARCHAR -> INT
**/

SELECT CONVERT(NUMERIC(7,7),Charge_Pct) 
 FROM [Main].[Share_Class_Charges]
WHERE CHARGE_PCT <> 'None'
-- Error converting data type varchar to numeric.
我被哪里出了错以及错误信息所说的话弄糊涂了。请有人帮我解释一下错误消息的含义,以及需要做什么来更正代码

非常感谢,

Al.

数字7,7类型描述小数点前0位,后7位的数字。这意味着,如果您尝试强制转换一个小到10.12的VARCHAR,您将得到一个溢出错误

请改为尝试此查询:

SELECT CAST(Charge_Pct AS NUMERIC(5,2)) 
FROM [Main].[Share_Class_Charges]
WHERE CHARGE_PCT <> 'None'
这将尝试将Charge_Pct列(我假设该列包含百分比)转换为数字类型,由5个总数组成,小数点后有2个数字