MySQL 是一个广泛使用的关系型数据库管理系统,经常需要将字符类型的数据转换成数字类型的数据,下面介绍几种实现方式。
SELECT CAST('123' AS SIGNED);
使用 CAST 函数将字符串转换为整数或浮点数类型。SIGNED 表示有符号数,UNSIGNED 表示无符号数,如果不指定数据类型,会按照默认的方式自动转换,如下面的例子:
SELECT CAST('123.45' AS UNSIGNED); -- 会自动转换成整数
使用 CAST 函数需要注意类型不匹配的问题,如字符类型不能转换成日期类型,浮点类型也不能转换成日期类型。
SELECT STR_TO_DATE('2020-08-08', '%Y-%m-%d');
使用 STR_TO_DATE 函数将字符类型的日期数据转换成日期类型,第一个参数为需要转换的字符,第二个参数为目标日期格式,例如 %Y 表示年份,%m 表示月份,%d 表示日。如果字符类型的日期格式与目标格式不一致,也可以使用 DATE_FORMAT 函数进行转换。
SELECT DATE_FORMAT('08-08-2020', '%Y-%m-%d');
除了常见的函数外,还可以使用 CASE WHEN 语句进行转换。CASE WHEN 语句可以根据条件判断执行不同的操作,语法如下:
SELECT CASE column_name WHEN value1 THEN result1 WHEN value2 THEN result2 ELSE result3 END;
下面的例子将字符类型的数据转换成数字类型的数据:
SELECT CASE WHEN column_name REGEXP '^[0-9]+$' THEN CAST(column_name AS UNSIGNED) ELSE 0 END;
上面的例子中,REGEXP 表示正则表达式匹配,^[0-9]+$ 表示匹配数字或空字符串,CAST 函数将字符类型的数据转换成数字类型的数据,ELSE 表示未匹配到则返回 0。