當我執行下面的代碼,我得到一個錯誤什麼是case語句此錯誤背後的原因
declare @var varchar(10)='a'
select case @var
when 'a' then 'hi'
when 'b' then 'hello'
else 123
end
錯誤信息是「消息245,級別16,狀態1,2號線 轉換將varchar值「hi」轉換爲數據類型int時失敗。「 但是當我修改了上面的代碼成功
declare @var varchar(10)='a'
select case @var
when 'a' then 'hi'
when 'b' then 'hello'
else cast(123 as char(4))
end
執行的任何一個都可以解釋爲什麼當我執行之前的查詢我得到了錯誤? 在此先感謝
出於同樣的原因它發生在大多數語言?您有*表達式*(不是語句)處理不同數據類型的值,所以[優先](https://msdn.microsoft.com/en-us/library/ms190309.aspx)被考慮在內。 –
@jarlh - no,都包含'CASE'表達式。 SQL Server沒有'CASE'語句。 –
@Damien_The_Unbeliever,對不起,對我來說太早了。只是刪除我的評論。現在需要一些咖啡。 – jarlh