Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL从int转换为十进制_Sql_Sql Server 2005_Casting - Fatal编程技术网

SQL从int转换为十进制

SQL从int转换为十进制,sql,sql-server-2005,casting,Sql,Sql Server 2005,Casting,我在一个表中有两列,其中填充了整数值。对于每条记录,我希望将这两列的值分开,并格式化输出,以便将小数点移到右边 例如,如果一条记录的两列的值分别为4和1,并且我想将1除以4(因此为1/4),那么我希望输出为25.00 这是我刚才试过的最后一件事: CAST(Total AS Decimal(2))/CAST(TotalAnswers AS Decimal(2)) AS 'Percent' 我无法找到CAST函数的语法解释来查看为decimal传递的参数代表什么。当我更改它时,它有时确实会更改

我在一个表中有两列,其中填充了整数值。对于每条记录,我希望将这两列的值分开,并格式化输出,以便将小数点移到右边

例如,如果一条记录的两列的值分别为4和1,并且我想将1除以4(因此为1/4),那么我希望输出为25.00

这是我刚才试过的最后一件事:

CAST(Total AS Decimal(2))/CAST(TotalAnswers AS Decimal(2)) AS 'Percent' 
我无法找到CAST函数的语法解释来查看为decimal传递的参数代表什么。当我更改它时,它有时确实会更改小数点右侧的位数,但结果并不总是我所期望的,因此我想在这方面获得一些帮助。

decimal(2)
是小数点前两位小数,小数点后没有数字。这不允许小数点后有数字

DECIMAL(p,s)
规范定义了总位数(
p
)和小数点(
s
)后的位数(其中
s
不能大于
p
,如果写入则为0)

您需要使用类似于
DECIMAL(4,2)
(共4位-其中2位在小数点后;因此:小数点前也有2位)或类似的东西-小数点前和小数点后的一些数字-然后您将看到所需的结果


有关
DECIMAL
类型及其语法的详细信息,请参阅MSDN联机丛书主题

有几个参数

(p, s)
在哪里

  • p表示“精度”——小数点前后的总位数
  • s表示“刻度”-小数点后的位数
如果只提供1个参数,则只提供精度


有关十进制数据类型,请参阅联机丛书中的。

: 具有固定精度和比例的数字数据类型

十进制[(p[,s])]和数字[(p[,s])] 固定精度和刻度数字。使用最大精度时,有效值介于-10^38+1到10^38-1之间。SQL-92十进制的同义词是dec和dec(p,s)。numeric在功能上等同于decimal

p(精度) 小数点左侧和右侧可存储的最大小数位数总数。精度必须是从1到最大精度38之间的值。默认精度为18

s(比例尺) 小数点右侧可存储的最大小数位数。比例必须是从0到p的值。仅当指定了精度时,才能指定比例。默认比例为0;因此,0这样写:

SELECT CAST(CAST(Total As float) / TotalAnswers * 100 As decimal(8, 2))