這是SQL Server 2012數據庫...Case語句不工作
我讀從表中VARCHAR數據列,並根據用戶選擇的選項中的數據可能是字母數字或數字。我需要按這個列排序,所以我試圖使用一個case語句,但它似乎沒有工作。以下是我正在做的事情的一個簡單例子,但正如你所看到的,它在兩種情況下都流傳到案例陳述的其他部分......關於我在做什麼錯誤的任何想法?
Select '1st Grade Math' topic Into #temp
Declare @rptView int
Set @rptView = 1
Select Case @rptView
When 1 Then topic
Else cast(topic as int)
End
From #temp
Order by Case @rptView
When 1 Then topic
Else cast(topic as int)
End
Select Case
When @rptView = 1 Then topic
Else cast(topic as int)
End
From #temp
Order by Case @rptView
When 1 Then topic
Else cast(topic as int)
End
drop table #temp
你正在嘗試做的是用'varchar'和'int'數據類型創建一個列。這是無法完成的。 – HoneyBadger
我認爲這個錯誤代表了自身信息245,級別16,狀態1,行6 將varchar值'1st Grade Math'轉換爲數據類型int時轉換失敗。 - cast(主題爲int) – Vincent
case語句中的每個結果都必須返回相同的數據類型,因此如其他地方所述,它會嘗試將結果轉換爲常用數據類型,即具有最高[數據類型優先順序](https: //msdn.microsoft.com/en-GB/library/ms190309.aspx)。正如你所看到的,INT比varchar更高,這就是爲什麼它會嘗試輸出INT而不是其他方式。 – Bridge