-1
我想从下面的语句的比例除以造成零两个查询,TSQL
Select ((query1)/(query2)) AS Ratio.
结果为0。实际的结果是0.34 所以SQL被四舍五入为零。我怎样才能解决这个问题?
我想从下面的语句的比例除以造成零两个查询,TSQL
Select ((query1)/(query2)) AS Ratio.
结果为0。实际的结果是0.34 所以SQL被四舍五入为零。我怎样才能解决这个问题?
Select(
(SELECT 8) --<-- Query 1 returns INT 8
/
(SELECT 5) --<-- Query 2 returns INT 5
) AS Ratio
因为价值观诠释,但分,当你得到一个十进制值回,SQL Server会隐式转换为INT,将截断小数点,并返回一个整数回来。
上面的查询返回1
Select(
CAST((SELECT 8)AS NUMERIC(18,5)) --<-- Query 1 CAST as a DECIMAL or NUMERIC
/
CAST((SELECT 5) AS NUMERIC(18,5)) --<-- Query 2 CAST as a DECIMAL or NUMERIC
) AS Ratio
当转换成由两个查询SQL Server会通过将两个查询返回的结果隐式丁文重新调校的数字数据类型的结果,并返回
结果:1.60000000000000000000
整数除法。将其中一个边转换为'numeric'或'float' –
当我尝试下面的语句时:SELECT((5)/(10))结果仍然是0.每个查询都会产生一个数字,但除法将方程向上吹来 – ColorfulWind
是的,他们都是整数。分子和分母需要非整数以避免整数除法(它只返回“整个”部分而忽略余数)。你看过重复吗? –