Cast de VARCHAR à INT – MySQL

Mes données actuelles pour

SELECT PROD_CODE FROM `PRODUCT` 

est

 PROD_CODE 2 5 7 8 22 10 9 11 

J’ai essayé toutes les quatre requêtes et aucun travail. ( Réf )

 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; 

Tous jettent des erreurs de syntaxe telles que ci-dessous:

Vous avez une erreur dans votre syntaxe SQL; Consultez le manuel correspondant à votre version du serveur MySQL pour connaître la syntaxe appropriée à utiliser près de ‘) AS INT FROM LIMITE DE PRODUIT 0, 30’ à la ligne 1

Vous avez une erreur dans votre syntaxe SQL; Consultez le manuel correspondant à la version de votre serveur MySQL pour connaître la syntaxe appropriée à utiliser près de ‘INTEGER) FROM LIMITE DE PRODUIT 0, 30’ à la ligne 1

Quelle est la bonne syntaxe pour convertir varchar en entier dans MySQL?

Version MySQL: 5.5.16

Comme décrit dans Fonctions et opérateurs de la dissortingbution :

Le type du résultat peut être l’une des valeurs suivantes:

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

Par conséquent, vous devez utiliser:

 SELECT CAST(PROD_CODE AS UNSIGNED) FROM PRODUCT 

Pour que les champs / valeurs de varchar soient placés au format numérique, peu de hack peut être utilisé:

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