Передача от VARCHAR до INT - MySQL

Мои текущие данные для

SELECT PROD_CODE FROM `PRODUCT`

является

PROD_CODE
2
5
7
8
22
10
9
11

Я пробовал все четыре запроса, и никто не работал. (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;

Все синтаксические ошибки throw, такие как ниже:

У вас есть ошибка в синтаксисе SQL; проверьте руководство, соответствующее версии сервера MySQL, для правильного использования синтаксиса рядом ') AS INT FROM PRODUCT LIMIT 0, 30' в строке 1

У вас есть ошибка в синтаксисе SQL; проверьте руководство, которое соответствует вашей версии сервера MySQL для правильного синтаксиса для использования рядом с "INTEGER" ) ИЗ ЛИНИИ ПРОДУКТА 0, 30 'в строке 1

Каков правильный синтаксис для преобразования varchar в integer в MySQL?

Версия MySQL: 5.5.16

Ответ 1

Как описано в Функции и операторы трансляции:

Тип результата может быть одним из следующих значений:

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

Поэтому вы должны использовать:

SELECT CAST(PROD_CODE AS UNSIGNED) FROM PRODUCT

Ответ 2

Для отливки полей varchar/значений в формат числа может быть немного взлома:

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

Ответ 3

Вы можете сделать следующее: SELECT CAST(PROD_CODE AS CHAR) FROM product;