SQL Server 2008でVarcharをIntに変換する方法。
実行しようとしたときに次のコードがあり、VarcharをIntに変換できませんでした。
Select Cast([Column1] as INT)
Column1はVarchar(21)NOT NULL型であり、Intに変換したかった。実際、私はColumn1をINTとしてFieldを持つ別のテーブルに挿入しようとしています。誰かがこれを変換するのを手伝ってくれますか?
cast
ではスペースは問題になりませんが、TAB
、CR
、またはLF
などの文字はスペースとして表示され、LTRIM
またはRTRIM
であり、問題になります。
たとえば、次を試してください。
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
を使用してデータをクリーンアップします。
コメントごとに、 REPLACE
をcast
の一部として使用できます。
select cast(replace(replace(@v3, char(13), ''), char(10), '') as int)
これが頻繁に発生するものである場合は、データをクリーンアップし、入力前にCR
とLF
を削除するようにテーブルの設定方法を変更することをお勧めします。
変換機能を使用できます:
Select convert(int,[Column1])
それはあなたがそれをする方法です、それはエラーを投げていますか?変換しようとしている値は変換可能であると確信していますか?明らかな理由により、abc123
int。
[〜#〜] update [〜#〜]
あなたのコメントに基づいて、変換しようとしている値に含まれるスペースを削除します。
これは、アルファ文字またはNULL値がない限り、INTに変換する正しい方法です。
NULL値がある場合は、使用します
ISNULL(column1, 0)
SQLには2つのタイプの変換メソッドがあります。
CASTとCONVERTには同様の機能があります。 CONVERTはSQL Serverに固有のものであり、日付と時刻の値、小数、通貨記号を変換する際の柔軟性が大幅に向上します。 CASTは、2つの関数のANSI標準です。
変換を使用
Select convert(int,[Column1])
キャストを使用
Select cast([Column1] as int)
以下のコマンドで試してみると、すべての値がINTに尋ねられます
isnumeric(YourColumn + '.0e0')= 1の場合に大文字と小文字を選択し、次にcast(YourColumn as int)またはNULL end/* case */YourTableから選択
次のコードを試してください。ほとんどの場合、コンマの問題が原因です。
cast(replace([FIELD NAME],',','') as float)