スペースを使用し、問題になります。
declare @v1 varchar(21) = '66',
@v2 varchar(21) = ' 66 ',
@v3 varchar(21) = '66' + char(13) + char(10),
@v4 varchar(21) = char(9) + '66'
select cast(@v1 as int) -- ok
select cast(@v2 as int) -- ok
select cast(@v3 as int) -- error
select cast(@v4 as int) -- error
は、これらの文字のために、あなたの入力をチェックして、あなたがそれらを見つけた場合、あなたのデータをクリーンアップするためにREPLACE
を使用します。
たとえば、次のようにしてみてください。これは頻繁に起きて何かがある場合は、データをクリーンアップするために、それが良いだろう、
select cast(replace(replace(@v3, char(13), ''), char(10), '') as int)
をして変更します。あなたのコメントパー
、あなたはあなたのcast
の一部としてREPLACE
を使用することができますテーブルが入力される前に、CR
およびLF
が削除されます。
はい、あなたは '@ v3'で私のシナリオと同じ条件がありますので、それ以上の方法や解決策があるので、私たちはそれをvarcharからintに変換できますか? –
@VikrantMore、 'CRLF'を削除するための' REPLACE'の使用を含むように私の答えを更新しました。 –