从 VARCHAR 转换为 INT - MySQL

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/12126991/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-31 14:38:40  来源:igfitidea点击:

Cast from VARCHAR to INT - MySQL

mysqlsql

提问by Lenin Raj Rajasekaran

My Current Data for

我目前的数据

SELECT PROD_CODE FROM `PRODUCT`

is

PROD_CODE
2
5
7
8
22
10
9
11

I have tried all the four queries and none work. (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;

All throw syntax errors such as below:

所有抛出语法错误如下:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ') AS INT FROM PRODUCT LIMIT 0, 30' at line 1

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'INTEGER) FROM PRODUCT LIMIT 0, 30' at line 1

您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的 ') AS INT FROM PRODUCT LIMIT 0, 30' 附近使用正确的语法

您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,在第 1 行的“INTEGER) FROM PRODUCT LIMIT 0, 30”附近使用正确的语法

What is the right syntax to cast varchar to integer in MySQL?

在 MySQL 中将 varchar 转换为整数的正确语法是什么?

MySQL Version: 5.5.16

MySQL 版本:5.5.16

回答by eggyal

As described in Cast Functions and Operators:

Cast Functions and Operators 中所述

The type for the result can be one of the following values:

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

结果的类型可以是以下值之一:

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

Therefore, you should use:

因此,您应该使用:

SELECT CAST(PROD_CODE AS UNSIGNED) FROM PRODUCT

回答by Jirka Kop?iva

For casting varchar fields/values to number format can be little hack used:

将 varchar 字段/值转换为数字格式可以使用很少的技巧:

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