[Renewal]列がnvarchar(255)、nullに設定されているテーブルがついています。私の手仕事ではなく、私はそれを変更できません。この列を計算に使用する必要があります。私は1つのステートメントでそれをやっていくことができますが、ELSEステートメントの後には、 "間違ったシンタックスの近くに..."というエラーは表示されません。それがINTとしてCASTしようとする問題に遭遇したなら、私はレコードの残りの部分を続行し、クエリ全体をホースしないことを望みます。私はINT、ヌルではない追加の列を追加し、これより前に実行する更新文を書くことができると思いますが、私は同じ問題に遭遇する恐れがあります。私はSQLの男よりもUIの男、任意の提案ですか? SQL Server 2008R上で動作します。あなたが唯一のnumeric
値でEND
フィルターDATEADDをnvarcharで更新しますか?
UPDATE C
SET [ExpirationDate] = Dateadd(MONTH, (CASE
WHEN Isnumeric(C.Renewal) = 1 THEN Cast(C.Renewal AS INT)
ELSE 0
END), [ExpirationDate])
FROM dbo.MyTable C
WHERE C.MyCondition = 'True'
声明CASE
のレコードが欠落している
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ケースWHEN構文。 – dfundako