我困住了一個表,它有一列,[Renewal]被設置爲nvarchar(255),爲空。不是我的手藝,我不能改變它。我現在需要在計算中使用此列。儘可能接近我在一個聲明中所做的事情,但是我不能在ELSE語句之後通過「錯誤的語法附近...」錯誤。如果遇到試圖將CAST作爲INT的問題,我希望它繼續處理剩餘的記錄,而不是整個查詢。我想我可以添加一個額外的列,即INT,不爲空,並寫一個更新語句在此之前運行,但我擔心我會跑到相同的問題。我比SQL人更像UI人,有什麼建議嗎?它將在SQL Server 2008R上運行。謝謝你在前進用nvarchar更新DATEADD?
UPDATE C
SET [ExpirationDate] = DATEADD(MONTH,
(CASE WHEN ISNUMERIC(C.Renewal)= 1
THEN CAST(C.Renewal AS INT)
ELSE 0)
, [ExpirationDate])
FROM dbo.MyTable C
WHERE C.MyCondition = 'True'
您錯過了單詞END。 Google適當的SQL Server CASE WHEN語法。 – dfundako