mysql 把int转换为varchar怎么实现

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql 把int转换为varchar怎么实现相关的知识,希望对你有一定的参考价值。

SELECT CAST(112 AS CHAR(8));

 

SELECT CONNCAT(112)

 注意:

mysql concat函数使用方法:
CONCAT(str1,str2,…) 
返回结果为连接参数产生的字符串。如有任何一个参数为NULL ,则返回值为 NULL。
注意:
如果所有参数均为非二进制字符串,则结果为非二进制字符串。 
如果自变量中含有任一二进制字符串,则结果为一个二进制字符串。
一个数字参数被转化为与之相等的二进制字符串格式;若要避免这种情况,可使用显式类型 cast, 例如:
SELECT CONCAT(CAST(int_col AS CHAR), char_col)
MySQL concat函数可以连接一个或者多个字符串,如
mysql> select concat('10');  
+--------------+  | concat('10') |  
+--------------+  | 10   |  
+--------------+  1 
row in set (0.00 sec)   m
ysql> select concat('11','22','33');  
+------------------------+  | concat('11','22','33') |  
+------------------------+  | 112233 |  
+------------------------+  
1 row in set (0.00 sec)  
MySQL的concat函数在连接字符串的时候,只要其中一个是NULL,那么将返回NULL
mysql> select concat('11','22',null);  
+------------------------+  | concat('11','22',null) |  
+------------------------+  | NULL   |  
+------------------------+  
1 row in set (0.00 sec)

参考技术A

int转换为varchar是不能相互转换。

拓展:

1、MySQL 是一个关系型数据库,由瑞典 MySQL AB 公司开发,目前属于 Oracle 旗下公司。MySQL 最流行的关系型数据库管理系统,在 WEB 应用方面 MySQL 是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一。MySQL 是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。

2、MySQL 所使用的 SQL 语言是用于访问数据库的最常用标准化语言。MySQL 软件采用了双授权政策(本词条"授权政策"),它分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择 MySQL 作为网站数据库。由于其社区版的性能卓越,搭配 php ,Linux和 Apache 可组成良好的开发环境,经过多年的web技术发展,在业内被广泛使用的一种web服务器解决方案之一,称之为LAMP。

参考技术B 直接就可以用了,隐式转换的
不需要用concat,如果是拼接int和字符串的,就要用concat(int,char)
参考技术C 使用ALTER命令修改,格式:
ALTER TABLE 表名 MODIFY COLUMN 字段名 字段类型定义;

例如:
ALTER TABLE chatter_users MODIFY COLUMN ip VARCHAR(50);
参考技术D

楼上的方法可能有问题,,mysql,cast是不能转换varchar的,好像

 

你可以试下

select concat(id)
from 表

这样

本回答被提问者和网友采纳

从 VARCHAR 转换为 INT - MySQL

【中文标题】从 VARCHAR 转换为 INT - MySQL【英文标题】:Cast from VARCHAR to INT - MySQL 【发布时间】:2012-08-21 01:21:02 【问题描述】:

我的当前数据

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;

所有抛出语法错误如下:

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

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

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

MySQL 版本:5.5.16

【问题讨论】:

每次尝试报告什么错误?你的输入是什么?如果对结果集中的任何记录进行强制转换失败,则 supposed 会使查询失败。至少,这就是 sql 标准所说的,尽管 MySql 因违反标准中的安全规则而臭名昭著。而且,记录在案,第 2 和第 4 个列出的样本是正确的。 【参考方案1】:

如Cast Functions and Operators中所述:

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

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

因此,您应该使用:

SELECT CAST(PROD_CODE AS UNSIGNED) FROM PRODUCT

【讨论】:

未签名正在工作。 MySQL 从什么时候开始将 Integer 数据类型更改为 Unsigned? @emaillenin:用于转换的数据类型与用于列的数据类型不同,因为需要有关如何解释数据的其他信息,例如整数是否带符号。 感谢您提供此信息。 MySQL 文档对我来说很混乱,所以这很有帮助。 请注意,在 MariaDB CAST(PROD_CODE AS INT) works 上就好了。 @bsplosion:我不反对。已有open feature requests since at least 2014 将AS INT 视为AS SIGNED【参考方案2】:

对于将 varchar 字段/值转换为数字格式可能有点小技巧:

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

【讨论】:

当有一个简单的、记录的、受支持和推荐的解决方案时,为什么还要使用这样的“hack”? @eggyal TL;DR: 您提到的“黑客”是一个简单、有文档且推荐的解决方案。 - - - - - - - - - - - - 长版:来自the manual:To cast a string to a number, you normally need do nothing other than use the string value in numeric context 虽然我会使用+0 而不是*1,因为加法更快。 @BrianStinar 接受的答案清楚地表明存在具有更好语义的解决方案,但有时将原始值隐式转换为另一个原始值只是方便,尤其是在组合字符串和数字类型时。因此,为了这个特性的存在而随意抨击编程语言似乎相当不合适。 不要使用这些类型的黑客! - 非常糟糕的做法,当代码充满这些并且难以恢复时,会在很久以后反击 有了这个答案,我发现有时会以 float64 结尾,这就是为什么我更喜欢使用CONVERT('123456',UNSIGNED INTEGER)

以上是关于mysql 把int转换为varchar怎么实现的主要内容,如果未能解决你的问题,请参考以下文章

MySQL字符varchar转换为int、date

在 MySQL 中将 int 转换为 varchar 数据类型

从 VARCHAR 转换为 INT - MySQL

c++ 如何把一个int转为char*

MySQL类型转换 使用CAST将varchar转换成int类型排序

mysql中int型的数字怎么转换成字符串