为什么T-SQL将我的DECIMAL数据转换为INT?

时间:2019-03-06 19:11:55

标签: entity-framework tsql casting

我有一个表,其中的列定义如下:

PrincipalBalance DECIMAL(13,2) NOT NULL

我有一个存储过程,返回的值如下:

SELECT D.PrincipalBalance
  FROM MyTable AS D
 WHERE ID = @myKey;

如果我检查表的元数据,则列定义是正确的(显示为DECIMAL(13,2)。)在对象资源管理器中也显示了正确的类型。但是,存储过程中该列的IntelliSense显示它是INT,令人费解。

为此,我发现的唯一解决方法是在存储过程中使用CAST / CONVERT,这似乎是不必要的。

注意今天早些时候,我遇到了一个与十进制列相同的问题,该问题以VARCHAR(50)(或其他相关长度)的形式返回。有趣的是,在两种情况下,小数列的值为零。

这是怎么回事?为什么SQL Server选择错误的类型?

0 个答案:

没有答案