详解MySQL的CAST()函数:数据类型转换

  • Post category:MySQL

MySQL的CAST()函数可以将一种数据类型的数据转换为另一种数据类型的数据,使得数据可以按照指定的格式进行展示、排序和计算。其主要用途包括以下几个方面:

  1. 将字符型数据转换为数字型数据:当我们需要将一个字符串类型的数字转换为实际数值时,可以使用CAST()函数。例如:
SELECT CAST('123.45' AS DECIMAL(10,2));

该语句将字符串’123.45’转换为DECIMAL类型的数据,其中DECIMAL(10,2)表示该数据类型最大长度为10位,小数点后最多保留2位。执行结果为123.45。

  1. 数值类型数据的精度控制:当我们需要对数字类型的数据进行截取或保留小数点后指定位数时,可以使用CAST()函数。例如:
SELECT CAST(123.456 AS DECIMAL(10,2));

该语句将小数点后三位的数字截取掉,只保留两位小数,执行结果为123.45。

  1. 数据类型的转换:当我们需要将两种不同的数据类型进行转换时,可以使用CAST()函数。例如:
SELECT CAST('2022-12-31' AS DATE);

该语句将字符串’2022-12-31’转换为DATE类型的数据,执行结果为2022-12-31。

下面是两个示例:

  1. 将字符型数据转换为数字型数据

假设我们有一个订单表orders,其中包含订单编号(order_id)和订单总额(total_price)两个字段,其中订单总额是以字符串类型的形式存储在数据库中,我们需要将其转换为数值型数据,并计算所有订单总额的平均值。

-- 查询所有订单的总额,将字符串总额转换为DECIMAL类型的数据
SELECT CAST(total_price AS DECIMAL(10,2)) AS total FROM orders;

-- 计算订单总额的平均值
SELECT AVG(CAST(total_price AS DECIMAL(10,2))) AS avg_total FROM orders;
  1. 将数值型数据保留小数点后指定位数

假设我们有一个评分表rating,其中包含评分编号(id)和评分分数(score)两个字段,评分分数是以浮点型数据的形式存储在数据库中,我们需要将所有评分都保留一位小数点。

-- 将所有评分保留一位小数点
SELECT CAST(score AS DECIMAL(10,1)) AS rating_score FROM rating;

以上就是CAST()函数的作用与使用方法的完整攻略,包括了函数的用途和使用示例。