我正在觀察一個非常奇怪的行爲。請考慮以下幾點:在SQL Server中將CHAR轉換爲VARCHAR的問題
declare @a char(15)
set @a = 'ABC'
select len(@a), len(convert(varchar, @a)), convert(varchar, @a) + 'D', len(convert(varchar, @a) + 'D')
在生產出的結果中設置的值3和4是意外:
3 3 ABC D 16
難道是在SQL Server中的錯誤?任何其他解釋?
在使用SQL Server的二十年中,平均而言,我已經看到了一個實際的微軟錯誤,它導致大約每十年一次的查詢意外返回數據。如果你認爲你看到了一個,那麼你很可能只是不瞭解正確的行爲。 –
如果不清楚,問題的關鍵不在於這是否是SQL Server錯誤。關鍵是這種行爲似乎有些不合邏輯,因此也是意料之外的。所以,而不是一般的文體批評,對這種行爲的有意義的解釋會受到歡迎。 – Ramzay