Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.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 server 如何在SQL Server中显示小数点后的两位数_Sql Server_Sql Server 2008_Sqldatatypes - Fatal编程技术网

Sql server 如何在SQL Server中显示小数点后的两位数

Sql server 如何在SQL Server中显示小数点后的两位数,sql-server,sql-server-2008,sqldatatypes,Sql Server,Sql Server 2008,Sqldatatypes,我有一个表,它在SQL Server中有一列浮点数据类型 我想返回带2位小数的浮点数据类型列值 例如:如果我插入12.3,它应该返回12.30 如果我插入12,它应该返回12.00 小数10,2意味着您可以拥有最大总精度为10位的十进制数。其中2个在小数点后,8个在小数点前。 最大可能的数字是9999999.99您也可以使用以下代码来帮助我: select convert(numeric(10,2), column_name) as Total from TABLE_NAME 其中Total是

我有一个表,它在SQL Server中有一列浮点数据类型 我想返回带2位小数的浮点数据类型列值

例如:如果我插入12.3,它应该返回12.30

如果我插入12,它应该返回12.00

小数10,2意味着您可以拥有最大总精度为10位的十进制数。其中2个在小数点后,8个在小数点前。
最大可能的数字是9999999.99

您也可以使用以下代码来帮助我:

select convert(numeric(10,2), column_name) as Total from TABLE_NAME

其中Total是所需字段的别名。

如果您还想进行强制转换和舍入,也可以使用以下内容。这可能会帮助你或其他人

SELECT CAST(ROUND(Column_Name, 2) AS DECIMAL(10,2), Name FROM Table_Name

你也可以做一些短得多的事情:


选择FORMAT2.3332232,'N2'

要将列名金额转换为带2位小数的浮点数

CASE WHEN EXISTS (SELECT Amount From InvoiceFee Ifee WHERE IFEE.InvoiceId = 
DIR.InvoiceId AND FeeId = 'Freight Cost')
     THEN  CAST ((SELECT Amount From InvoiceFee Ifee WHERE IFEE.InvoiceId = 
DIR.InvoiceId AND FeeId = 'Freight Cost') AS VARCHAR)
            ELSE '' END AS FCost,
选择cast56.66823作为小数10,2
这将返回56.67。

非常感谢……它节省了我所有的C代码更改时间。请您解释一下10在小数中的含义10210,2定义了小数的精度。10位数字和逗号后的2位数字。@juergend您好,我正在尝试这样一个简单的查询,选择cast50/20作为某个表限制1中的小数5,2,但输出为2.00,它应该是2.5。@Moosa:因为它在转换之前进行计算。然后它已经四舍五入到2。只需使用select 50/20.0。由于20.0已经是十进制,因此转换工作正常。请看@stom:只有数字才算数。我认为这是做同样事情的另一种方式。这是一个公平的说法。从dual->12311313.1,2中选择castround12311313.1,2作为小数10,2。我将它放在castyour_float_列上作为小数10,2,因为我不知道我的小数可以有多大。请注意,这将类型更改为NVARCHAR。这是一种过度杀戮的方式,确实如此不回答这个问题。Stack Overflow已经有了一个答案,在这里:您的答案在OP原始海报上是正确的,但它不是描述性的。此外,您正在发布一个4年前提出的问题,该问题的正确答案与您的答案相似,可能比您的答案更好。在旧帖子上回答是好的,但前提是它有一个过时的答案。
CASE WHEN EXISTS (SELECT Amount From InvoiceFee Ifee WHERE IFEE.InvoiceId = 
DIR.InvoiceId AND FeeId = 'Freight Cost')
     THEN  CAST ((SELECT Amount From InvoiceFee Ifee WHERE IFEE.InvoiceId = 
DIR.InvoiceId AND FeeId = 'Freight Cost') AS VARCHAR)
            ELSE '' END AS FCost,