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()
です。