SQLクエリで文字列をint型に変換する

SQL Server 2005でSQLクエリを使用して文字列を整数に変換するにはどうすればよいですか?

ソリューション

CASTまたはCONVERT]1を使うことができます。

SELECT CAST(MyVarcharCol AS INT) FROM Table

SELECT CONVERT(INT, MyVarcharCol) FROM Table
解説 (4)

また、数値文字列(例:'56.72')をINTに変換する際には、SQLエラーが発生する可能性がありますのでご注意ください。

Conversion failed when converting the varchar value '56.72' to data type int.

これを回避するには、次のように2つの変換を行います。

STRING -> NUMERIC -> INT

または

SELECT CAST(CAST (MyVarcharCol AS NUMERIC(19,4)) AS INT)

TableAからTableBにデータをコピーする場合、変換は暗黙的に行われますので、2つ目の変換は必要ありません(直近のINTに切り捨てても問題ない場合)。

INSERT INTO TableB (MyIntCol)
SELECT CAST(MyVarcharCol AS NUMERIC(19,4)) as [MyIntCol]
FROM TableA
解説 (0)

SQL Server 2012以降では、TRY_PARSEまたはTRY_CONVERTを使用することができます。

SELECT TRY_PARSE(MyVarcharCol as int)

SELECT TRY_CONVERT(int, MyVarcharCol)
解説 (1)