[mysql] VARCHAR에서 INT로 캐스트-MySQL

내 현재 데이터

SELECT PROD_CODE FROM `PRODUCT`

이다

PROD_CODE
2
5
7
8
22
10
9
11

나는 네 가지 쿼리를 모두 시도했지만 아무것도 작동하지 않습니다. ( 참고 )

SELECT CAST(PROD_CODE) AS INT FROM PRODUCT;

SELECT CAST(PROD_CODE AS INT) FROM PRODUCT;

SELECT CAST(PROD_CODE) AS INTEGER FROM PRODUCT;

SELECT CAST(PROD_CODE AS INTEGER) FROM PRODUCT;

아래와 같은 구문 오류가 모두 발생합니다.

SQL 구문에 오류가 있습니다. 1 행에서 ‘) AS INT FROM PRODUCT LIMIT 0, 30’근처에서 사용할 올바른 구문은 MySQL 서버 버전에 해당하는 매뉴얼을 확인하십시오.

SQL 구문에 오류가 있습니다. 1 행의 PRODUCT LIMIT 0, 30 ‘에서’INTEGER) FROM PRODUCT LIMIT 0, 30 ‘근처에서 사용할 올바른 구문은 MySQL 서버 버전에 해당하는 매뉴얼을 확인하십시오.

MySQL에서 varchar를 정수로 캐스트하는 올바른 구문은 무엇입니까?

MySQL 버전 : 5.5.16



답변

캐스트 함수 및 연산자에 설명 된대로 :

결과 유형은 다음 값 중 하나 일 수 있습니다.

  • BINARY[(N)]
  • CHAR[(N)]
  • DATE
  • DATETIME
  • DECIMAL[(M[,D])]
  • SIGNED [INTEGER]
  • TIME
  • UNSIGNED [INTEGER]

따라서 다음을 사용해야합니다.

SELECT CAST(PROD_CODE AS UNSIGNED) FROM PRODUCT


답변

varchar 필드 / 값을 숫자 형식으로 캐스팅하는 데 약간의 해킹이 사용될 수 있습니다.

SELECT (`PROD_CODE` * 1) AS `PROD_CODE` FROM PRODUCT`


답변