最近有人問我這個問題,我想我會在Stack Overflow上發佈它以獲得一些輸入。爲什麼從int轉換/轉換返回星號
現在顯然以下兩種情況都應該失敗。
#1:
DECLARE @x BIGINT
SET @x = 100
SELECT CAST(@x AS VARCHAR(2))
明顯的錯誤:
Msg 8115, Level 16, State 2, Line 3
Arithmetic overflow error converting expression to data type varchar.
#2:
DECLARE @x INT
SET @x = 100
SELECT CAST(@x AS VARCHAR(2))
並不明顯,它返回一個*(人們會想到這是一個算術溢出以及???)
現在我真正的問題是,爲什麼?這是僅僅是設計還是有歷史或其他什麼 背後呢?
我看了幾個網站,不能得到滿意的答案。
http://msdn.microsoft.com/en-us/library/aa226054(v=sql.80).aspx
請注意我知道/瞭解,當一個整數太大而被轉換成特定大小的字符串,這將是「轉化」成星號,這是明顯的答案,我希望我可以對所有不斷給出這個答案的人下決心。 我想知道爲什麼使用星號而不是拋出異常,例如歷史原因等?
查找星號的十進制ASCII碼以解決「謎題」。 – dasblinkenlight 2012-02-03 05:24:16
哈哈,42?宇宙和其他一切生命的答案? hehehe – Helix 2012-02-03 05:48:46
@dasblinkenlight - 這解釋了爲什麼'select *'返回**所有** :)。 – 2012-02-03 06:41:26