답변:
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.
이 문제를 해결하려면 다음과 같이 두 가지 변환을 수행하십시오.
STRING-> 숫자-> INT
또는
SELECT CAST(CAST (MyVarcharCol AS NUMERIC(19,4)) AS INT)
TableA에서 TableB로 데이터를 복사 할 때 변환은 암시 적이므로 두 번째 변환이 필요하지 않습니다 (가장 가까운 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)