同時に2つの列を設定しようとすると、更新が機能しない理由を誰かが知っていますか?
UPDATE mytable
SET [Customer] = RIGHT([Customer], CHARINDEX('#', REVERSE([Customer])) -1) ,
[Segment] = RIGHT([Segment], CHARINDEX('#', REVERSE([Segment])) -1)
WHERE CHARINDEX('#', [Customer]) > 0 OR
CHARINDEX('#', [Segment]) > 0
1 つの列だけを更新してクエリを実行すると、期待どおりに機能します。両方で実行すると、次のエラーが発生します。
Invalid length parameter passed to the RIGHT function. The statement has been terminated.
CHARINDEX が 0 を返したときにこれが発生する可能性があることはわかっていますが、WHERE 句でそれを制御しようとしています。