web-dev-qa-db-fra.com

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 aucune ne fonctionne. ( Ref )

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;

Toutes les erreurs de syntaxe telles que ci-dessous:

Vous avez une erreur dans votre syntaxe SQL; Consultez le manuel correspondant à la version de votre serveur MySQL pour connaître la syntaxe à utiliser avec ') AS INT DE PRODUCT LIMIT 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 à utiliser près de 'INTEGER) FROM PROD LIMIT 0, 30' à la ligne 1.

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

Version MySQL: 5.5.16

227

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

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

  • BINARY[(N)]
  • CHAR[(N)]
  • DATEname__
  • DATETIMEname__
  • DECIMAL[(M[,D])]
  • SIGNED [INTEGER]
  • TIMEname__
  • UNSIGNED [INTEGER]

Par conséquent, vous devriez utiliser:

SELECT CAST(PROD_CODE AS UNSIGNED) FROM PRODUCT
489
eggyal

Pour transtyper les champs/valeurs varchar au format numérique, vous pouvez utiliser peu

SELECT (`PROD_CODE` * 1) AS `PROD_CODE` FROM PRODUCT`
47
Jirka Kopřiva