Mysql convert方法小记

Mysql 是一款关系型数据库,可以存储结构化的数据。今天介绍下 Mysql 提供的一个转换类型的方法CONVERT;

CONVERT(expr,type)能把字段转成指定类型,其中type可填类型如下,和CAST(expr AS type)功能一样,如SELECT CONVERT("2017-08-29", DATE),对于字符字段排序select * from user order by cast(age as UNSIGNED) asc;;

如果age字段是char 类型存储,select * from user order by age asc;输出结果如下:

name age
Li 1
Zhang 10
Huang 2

这可能不是我们想要的,我们希望按数值来排,这时可以转下类型,使用select * from user order by cast(age as UNSIGNED) asc; 结果如下:

name age
Li 1
Huang 2
Zhang 10

CONVERT(expr,type)type可填类型如下:

type类型(中括号表选填) 说明 示例
BINARY[(N)] 二进制 SELECT CONVERT("abcde", BINARY(3)) AS num输出是abc
CHAR[(N)] [charset_info] 字符 SELECT CONVERT("abcde", CHAR(10)) AS num输出abcde,注意长度不足10不会在后面补空格
DATE 没有时间的日期,如2019-05-21 SELECT CONVERT("2017-08-29", DATE);输出:2017-08-29
DATETIME 日期时间,如2019-05-21 17:00:00 SELECT CONVERT("2019-08-01", DATETIME);输出2019-08-01 00:00:00
TIME 去掉日期的时间,如17:00:00 SELECT CONVERT("2017-08-01 01:01:01", TIME) ;输出01:01:01
DECIMAL[(M[,D])] 小数,M是总位数(包含小数位数),D 是小数位数 SELECT CONVERT(9999.9999, DECIMAL(3,2)) AS num 输出是9.99
SIGNED [INTEGER] 有符号 Integer SELECT CONVERT(-9999.5099, SIGNED) AS num输出-10000
UNSIGNED [INTEGER] 无符号 Integer SELECT CONVERT(9999.5099, UNSIGNED) AS num输出10000

补充,官方文档说type可以转成DOUBLEFLOAT,但实测执行却报错。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。