char(10)他の回答に加えて、 2回交換するつもりはなかったと思います。おそらく必要なのは、との両方を置き換えることchar(10)ですchar(13)。
UPDATE dbo.works
SET nIndex = CONVERT(INT, REPLACE(REPLACE(
strIndex, CHAR(13), ''), CHAR(10), ''));
もちろん、strIndexは文字列であるため、CR / LF以外の文字が含まれる可能性があるため、次のWHERE句を追加することをお勧めします。
WHERE ISNUMERIC(REPLACE(REPLACE(strIndex, CHAR(13), ''), CHAR(10), '')) = 1;
またはCASE、更新で式を使用して、互換性のない値が次のように設定されていることを確認できますNULL。例:
UPDATE dbo.works
SET nIndex = CASE
WHEN ISNUMERIC(REPLACE(REPLACE(strIndex, CHAR(13), ''), CHAR(10), '')) = 1
THEN
CONVERT(INT, REPLACE(REPLACE(
strIndex, CHAR(13), ''), CHAR(10), ''))
ELSE NULL END;
SQL Server 2012では、このロジックははるかに単純TRY_CONVERT()です。