本文作者:kris

MySQL中int(n)后面的n到底代表的是什么意思-mysql里in是什么意思

kris 2025-01-31 06:24:05 2
MySQL中int(n)后面的n到底代表的是什么意思-mysql里in是什么意思摘要: mysql big int类型什么时候有的?mysql big int类型一个月的时候有的。将丢失一个字符信息,char同理。由于varchar是变长存储的,所以实际开发中我们一般...

mysql big int类型什么时候有的?

mysql big int类型一个月的时候有的。将丢失一个字符信息,char同理。由于varchar是变长存储的,所以实际开发中我们一般都把varchar的宽度设为最长255,反正你没用完它也不会浪费空间

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

字段:number 是integer类型 在表test中

select cast(number as char) as number from test;

或者convert()方法。因为转换的时候mysql不支持转换成varchar所有要转成char.

/* 比如将123转换为char类型 */

SELECT CAST(123 AS CHAR);

/* 或者使用concat方法 */

SELECT CONCAT(123,'');

扩展资料:

Int是将一个数值向下取整为最接近的整数的函数。INT是数据库中常用函数中的取整函数,常用来判别一个数能否被另一个数整除。

Basic函数

原型:Int(number)

类别:数学函数

返回值:Integer 类型

作用:求不大于number 的最大整数,Int(3.8)=3,Int(-3.8)=-4。

注意:int不能取整。取整要用fix。

举例:

Dim aa = Int(-32.9)Msgbox a

mysql int类型最大多少?

关于这个问题,在MySQL中,INT类型的最大值为2147483647,即2^31-1。如果需要存储更大的整数,可以使用BIGINT类型,其最大值为9223372036854775807,即2^63-1。

如果mysql字段是int并加了索引,那么如果在查询的时候,条件加引号会用到索引吗?

这个问题其实咱们实验一下就可以知道答案了。

本地搭建测试环境:

MySQL5.7

建表如下:

MySQL中int(n)后面的n到底代表的是什么意思-mysql里in是什么意思

先来个条件不加引号的:

MySQL中int(n)后面的n到底代表的是什么意思-mysql里in是什么意思

显然根据红框中的内容,此查询是用到了索引的。

再来个不加引号的:

MySQL中int(n)后面的n到底代表的是什么意思-mysql里in是什么意思

同样是用到了索引。

其实MySQL在处理语句时,如果字段是int型,会隐式的把string类型强制转换成int型。本例中由于user_id是int型,所以MySQL遇到'5'时,会把'5'转换成5。

但是这种机制有时候会造成一些误解,如下例所示:

MySQL中int(n)后面的n到底代表的是什么意思-mysql里in是什么意思

这个例子不会提示错误,MySQL自动把'1,2,3'转成了1。

但其实不是我们想要的结果。我们想要的是如下结果:

MySQL中int(n)后面的n到底代表的是什么意思-mysql里in是什么意思

这算是一个MySQL的一个小坑吧,希望大家多多注意。

另外要注意的是,单独的in语句是不会用到索引的,如下图所示:

MySQL中int(n)后面的n到底代表的是什么意思-mysql里in是什么意思

是可以的。这种问题最好是自己试验一下,很容易得到结果。

MySQL中int(n)后面的n到底代表的是什么意思-mysql里in是什么意思

首先建表、插入数据、并且在int型的empno字段上增加一个索引。

可以使用这个语句多造一些数据:

INSERT INTO emp SELECT * FROM emp

执行int型:

EXPLAIN SELECT * FROM emp WHERE EMPNO = 1;

可以看到是使用到我们新建的索引了:

MySQL中int(n)后面的n到底代表的是什么意思-mysql里in是什么意思

再次执行char型:

EXPLAIN SELECT * FROM emp WHERE EMPNO = '1';

执行计划是一样的:

MySQL中int(n)后面的n到底代表的是什么意思-mysql里in是什么意思

执行一个奇怪的

EXPLAIN SELECT * FROM emp WHERE EMPNO = '1ab';

MySQL中int(n)后面的n到底代表的是什么意思-mysql里in是什么意思

哟哟哟,居然能执行出来。

结论

在MySQL里面,如果是数据类型字段,即使类型不一致,也不影响使用索引,不会产生隐式转换。

但还是建议尽量避免出现这样的SQL。

数值类型还有一种特殊隐式转换,就是如果包含字符,将被截断,只取前面的数字值。

如果不以数字开关的将被置为0。

就好像这样:

EXPLAIN SELECT * FROM emp WHERE EMPNO = 'ab1';

查询不会报错,结果为空:

MySQL中int(n)后面的n到底代表的是什么意思-mysql里in是什么意思

但是还是会走索引的:

MySQL中int(n)后面的n到底代表的是什么意思-mysql里in是什么意思


还是多实践!

希望我的回答能够帮助到你!

文章版权及转载声明

作者:kris本文地址:https://www.damoyx.com/p/29091.html发布于 2025-01-31 06:24:05
文章转载或复制请以超链接形式并注明出处大漠游侠网

阅读
分享