2
CASE WHEN Items.SerialNumber = -1 THEN Items.Aux1
ELSE Items.SerialNumber
END AS 'CheckNo'
這不起作用。我得到一個轉換varchar到int錯誤。我很困惑,因爲如果我將它作爲where查詢運行。我只是在案件陳述中發現錯誤,並不明白爲什麼。使用SQL獲取轉換錯誤Case語句
CASE WHEN Items.SerialNumber = -1 THEN Items.Aux1
ELSE Items.SerialNumber
END AS 'CheckNo'
這不起作用。我得到一個轉換varchar到int錯誤。我很困惑,因爲如果我將它作爲where查詢運行。我只是在案件陳述中發現錯誤,並不明白爲什麼。使用SQL獲取轉換錯誤Case語句
從MSDNcase statement
返回從 result_expressions類型的集合和可選else_result_expression最高優先級的類型。
INT
具有更高的優先級比所以varchar
所有表達時將被隱式轉換爲INT
。要了解更多有關數據類型優先check here
爲了避免隱整數轉換,轉換的INT
到Varchar
在when
表達
SELECT CASE
WHEN Items.SerialNumber = -1 THEN Items.Aux1
ELSE Cast(Items.SerialNumber AS VARCHAR(100))
END AS 'CheckNo'
謝謝我結束了在SerialNumber上使用轉換。我現在感覺超級慢。非常感謝您的幫助。 –
什麼是'SerialNumber'的數據類型和'Aux1'列?你的'CASE'語句期望返回**一個**類型的數據。所以如果'SerialNumber'和'Aux1'是不同的數據類型,即'SerialNumber' ='varchar'和'Aux1' ='int',那麼這就是你的問題。 –
這裏涉及的列的類型是什麼?你能否展示「工作」的例子? – David
你使用的是什麼rdbms? –