91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

join on different data type

發布時間:2020-06-01 21:06:00 來源:網絡 閱讀:841 作者:r7raul 欄目:大數據

SELECT ....
FROM A LEFT SEMI JOIN B
ON (A.col1 = B.col2)
WHERE ...
"
If A.col1 is of DOUBLE type, but B.col2 is of BIGINT,  will print WARNING: Comparing a bigint and a double may result in a loss of precision.   Why can't cast col2 to double automatically?


> If A.col1 is of DOUBLE type,

> but B.col2 is of BIGINT,

 

 

The automatic conversion is not acceptable according to the java language

spec (section 5.1.2)

 

https://docs.oracle.com/javase/specs/jls/se7/html/jls-5.html#jls-5.1.2

 

 

Also to be noted here is that in general, that even if you cast, you might

be casting the wrong way around.

 

Because joins on double columns will give incorrect (rather unintended,

but IEEE 754 correct) results when comparing byte serialized

representations - because of the nearly-equal property epsilon.

 

Easiest way to demonstrate this is to try the simplest off-by-epsilon case

(say, in python)

 

>>> import sys

>>> 0.1 + 0.2

0.30000000000000004

>>> 0.1 + 0.2 > 0.3

 

True

>>>

>>> ((0.1+0.2) - 0.3) < sys.float_info.epsilon

True

 

 

So if the RHS produced ETL values by sum() and the LHS was produced by

parsing log text, the JOIN will output zero rows.

 

If you want to do equijoins like that, the only valid case is to cast both

to fixed precision bigints (say, convert all dollars to cents, by *100),

not both to double.

 

Cheers,

Gopal



向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

昌吉市| 永川市| 台安县| 汝州市| 荆门市| 天等县| 许昌市| 将乐县| 巴林左旗| 乃东县| 安龙县| 桂东县| 陵川县| 云林县| 荥阳市| 府谷县| 义乌市| 临桂县| 梨树县| 来凤县| 喜德县| 兰西县| 锦屏县| 喀什市| 奉贤区| 肥城市| 东兴市| 年辖:市辖区| 阿克| 安国市| 龙井市| 虎林市| 嵊泗县| 和静县| 碌曲县| 东安县| 广平县| 余庆县| 建阳市| 紫阳县| 清丰县|