MySQL CAST()和CONVERT()的区别 您所在的位置:网站首页 covert和overt的区别 MySQL CAST()和CONVERT()的区别

MySQL CAST()和CONVERT()的区别

2024-01-05 02:53| 来源: 网络整理| 查看: 265

MySQL CAST()和CONVERT()的区别 0.有区别吗

cast()和convert()都是类型转换函数,可以将某个数据类型的值转换为另一种数据类型。

其实在大部分情况下,这两个函数都是没有区别的。MySQL官方文档中对于cast()也提到:

This operation may also be expressed as CONVERT(expr, type), which is equivalent.

意思是:cast()的此操作(类型转换)可以被convert()替换,他们是等价的。

那么它们两个真的就没有区别吗?如果没有区别,为什么要设计两个功能一样的函数呢?带着这样的疑问,我认真地阅读了一下官方文档,对此总结如下:

他 们 真 的 没 有 区 别。

1.没有区别

没错,这就是事实。cast()能做的convert()也能做,反之亦然。有的文章说convert()支持编码转换,可是我cast()也支持啊:

CONVERT(string, CHAR[(N)] CHARACTER SET charset_name) CAST(string AS CHAR[(N)] CHARACTER SET charset_name)

有的文章说,cast()可用于在CREATE TABLE ... SELECT语句中创建具有特定类型的列 ,可是我convert()也可以啊:

CREATE TABLE new_table1 SELECT CAST('2000-01-01' AS DATE) AS c1; CREATE TABLE new_table2 SELECT CONVERT('2000-01-01', DATE) AS c1;

这两条语句创建的表结构是一模一样的。

从功能上说,cast()和convert()就跟双胞胎一样,没有任何区别。

2.还是有一点的咯

硬要鸡蛋里挑骨头说区别的话,那就是以下两点吧:

语法不同: 功能cast()convert()类型转换cast(expr AS type)convert(expr, type)编码转换cast(string AS CHAR[(N)] CHARACTER SET charset_name)convert(expr USING transcoding_name) 或convert(string, CHAR[(N)] CHARACTER SET charset_name 标准不同。cast()是ANSI标准语法,convert()不是:

这个怎么说呢,使用ANSI标准语法可以有更好的移植性,但是对于SQL的性能方面基本没有影响。一个常见的误区是很多人认为count(1)比count(*)效率高,其实不是。count(*)是ANSI标准语法而count(1)不是,而他们实现的功能以及性能是一致的,没有任何区别。

3.结语

综上所述,在日常使用中,就不要再纠结用cast()还是convert()了,随便选一个就行,选不出来就丢硬币吧(不是)。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有