以下按預期回傳 0.81:
select .9*.9;
但這不是。它的回傳值為 0.8:
select power(.9, 2)
要讓它回傳 0.81,我必須轉換輸入:
select power(cast(.9 as float), 2)
為什么這里需要演員?我錯過了什么?
uj5u.com熱心網友回復:
該power函式回傳型別由第一引數的資料型別決定的。在這里,你給它一個decimal(1,1). 如檔案中所述,它回傳一個decimal(38,1).
您將通過像您所做的那樣進行強制轉換或以不同的方式提供函式來獲得您想要的結果。
uj5u.com熱心網友回復:
標量值.9是具有 1 位精度的 DECIMAL,并回傳相同的精度。如果您使用至少 2 位精度,您將得到您想要的:
SELECT POWER(.90, 2);
或者
DECLARE @num DECIMAL(18,2) = .9;
SELECT POWER(@num, 2);
uj5u.com熱心網友回復:
您傳遞的值的默認小數位數和精度為 1。
您可以通過使用驗證這一點
select precision, scale
from sys.dm_exec_describe_first_result_set(N'select .9 as test',null,0)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/353026.html
標籤:sql sql-server 查询语句
下一篇:更新多列/行case陳述句SQL
