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 文档对我来说很混乱,所以这很有帮助。 请注意,在 MariaDBCAST(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 中将 int 转换为 varchar 数据类型