我使用SQL Server。意外的SQL分割結果?
與分部合作我在這兩個查詢中收集了我的發現,您可以使用SQL Server版本重現這些查詢。
我期待從Integer公司獲得相同的價值。 因爲無論我的表中有什麼值,如果我得到意想不到的結果,我最終會遇到一個邏輯錯誤,有時很難進行調查。
SQL答:
WITH s AS (
SELECT 'Integer' AS c, 1 AS k UNION
SELECT 'Float', 1 UNION
SELECT 'NULL', NULL
)
SELECT
c AS [Type],
k/10 AS 'Division',
CAST(k as numeric(38,4))/10 AS 'Cast',
COALESCE(k, 0)/10 AS 'Coalesce',
COALESCE(k, .0)/10 AS 'Coalesce with float'
FROM s;
結果A
Type Division Cast Coalesce Coalesce with float
Float 0 0.100000 0 0.100000
Integer 0 0.100000 0 0.100000
NULL NULL NULL 0 0.000000
SQL B:
WITH s AS (
SELECT 'Integer' AS c, 1 AS k UNION
SELECT 'Float', .1 UNION
SELECT 'NULL', NULL
)
SELECT
c AS [Type],
k/10 AS 'Division',
CAST(k as numeric(38,4))/10 AS 'Cast',
COALESCE(k, 0)/10 AS 'Coalesce',
COALESCE(k, .0)/10 AS 'Coalesce with float'
FROM s;
結果A
Type Division Cast Coalesce Coalesce with float
Float 0.010000 0.010000 0.010000 0.010000
Integer 0.100000 0.100000 0.100000 0.100000
NULL NULL NULL 0.000000 0.000000
請檢查第二條語句SELECT'Float',.1 – profimedica
@profimedica在第二條語句中,您有一個小數點。這與0.1相同。第一個是缺失的,這就是爲什麼你的整數除法返回一個整數。 – scsimon
我必須強調,我創建了兩個方案,意識到添加點創建浮動的效果。此外,我期待的整數除法的結果導致一個整數和浮動的結果導致浮動。這兩個例子都是第一行。意想不到的結果是在整數線上,參與者是相同的,但輸出的類型是由浮點結果決定的。 – profimedica