SQL 쿼리를 사용하여 문자열을 int로 변환


168

SQL Server 2005에서 SQL 쿼리를 사용하여 문자열을 정수로 변환하는 방법은 무엇입니까?

답변:


297

CAST 또는 CONVERT를 사용할 수 있습니다 .

SELECT CAST(MyVarcharCol AS INT) FROM Table

SELECT CONVERT(INT, MyVarcharCol) FROM Table

4
필드 중 하나가 숫자가 아닌 경우 예외를 어떻게 포착 / 방지합니까? 나는 그것이 0으로 변환 될 것으로 예상했을 것이다.
Chloe

40
그것을 발견 :select CASE WHEN ISNUMERIC('x') = 1 THEN CAST('x' AS INT) ELSE 0 END
클로이

9
단지 한마디 : IsNumeric()약간의 왜곡 된 결과를 낳을 수 있습니다. 문자열 "-."에 대해 TRUE를 리턴하며, 숫자로 캐스트하려고 할 때 여전히 오류가 발생합니다.
Curt

3
문자열이 "-5"또는 "-20"과 같은 숫자 인 경우에만 "-"가있는 문자열의 경우 IsNumeric은 true이고 "5-", "-2-1"과 같은 문자열의 경우 false입니다. 따라서 isNumeric ()이 true이면 변환에서 예외가 발생하지 않아야합니다.
Pratyush Dhanuka

11

또한 숫자 문자열 '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

8

SQL Server 2012부터 TRY_PARSE 또는 TRY_CONVERT를 사용할 수 있습니다 .

SELECT TRY_PARSE(MyVarcharCol as int)

SELECT TRY_CONVERT(int, MyVarcharCol)

SQL Server 2005와 관련이 있기 때문에 원래 질문에 대한 정답은 아니지만, 2019 년이며 이전 버전의 SQL Server에 묶인 사람들이 적기 때문에이 대답은 분명히 도움이됩니다.
shaune

-2

이것을 시도해보십시오 .Athena에서 저에게 효과적이었습니다.

cast(MyVarcharCol as integer)
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.