回答:
CASTまたはCONVERTを使用できます。
SELECT CAST(MyVarcharCol AS INT) FROM Table
SELECT CONVERT(INT, MyVarcharCol) FROM Table
select CASE WHEN ISNUMERIC('x') = 1 THEN CAST('x' AS INT) ELSE 0 END
IsNumeric()
いくつかの不可解な結果を生成することができます。文字列 "-。"に対してTRUEを返しますが、それを数値にキャストしようとするとエラーが発生します。
また、数値文字列'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
SQL Server 2012以降では、TRY_PARSEまたはTRY_CONVERTを使用できます。
SELECT TRY_PARSE(MyVarcharCol as int)
SELECT TRY_CONVERT(int, MyVarcharCol)