mysql 把int转换为varchar怎么实现

发布网友

我来回答

6个回答

懂视网

一、如果表定义的是varchar字段,传入的是数字,则会发生隐式转换。

  1、表DDL

技术分享

 

2、传int的sql

技术分享

 

技术分享

3、传字符串的sql

技术分享

 

 

仔细看下表结构,rid的字段类型: 

技术分享

  

而用户传入的是int,这里会有一个隐式转换的问题,隐式转换会导致全表扫描。

把输入改成字符串类型,执行计划如下,这样就会很快了。

此外,还需要注意的是:

数字类型的0001等价于1

字符串的0001和1不等价

 

二、如果表定义的是int字段,传入的是字符串,在不超过int范围内,不会发生隐式转换,如果超出范围并且比较大小(以字符串类型比较‘$‘)会隐式转换。

1、表DDL

技术分享

 

2、不超范围传字符串的sql

 技术分享

 

3、不超范围传数字的sql

 技术分享

 

  

 

4、超出范围传字符串的sql

 技术分享

技术分享

 

5、超出范围传数字的sql

 技术分享

技术分享

 

关于MySQL隐式转换

标签:nload   隐式转换   就会   ddl   技术分享   mod   png   类型   注意   

热心网友

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)

热心网友

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。

热心网友

直接就可以用了,隐式转换的
不需要用concat,如果是拼接int和字符串的,就要用concat(int,char)

热心网友

使用ALTER命令修改,格式:
ALTER TABLE 表名 MODIFY COLUMN 字段名 字段类型定义;

例如:
ALTER TABLE chatter_users MODIFY COLUMN ip VARCHAR(50);

热心网友

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

 

你可以试下

select concat(id)
from 表

这样

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com