You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL中对varchar类型字段执行除法运算报错,应如何进行类型转换?

SQL varchar字段除法运算类型转换方案

报错的核心原因是字符串类型无法直接参与数值运算,需要先将两个字段转换为数值类型,同时可按需兼容除数为0、精度保留的需求。

通用CAST写法(兼容MySQL、PostgreSQL、SQL Server等绝大多数主流数据库)

转换为DECIMAL类型可保留小数精度,避免整数截断问题:

SELECT location,date, total_cases,total_deaths, 
        (CAST(total_cases AS DECIMAL(18,2)) / CAST(total_death AS DECIMAL(18,2)))*100 AS `death percentage`
FROM 你的表名;

如果需要避免total_death为0时的除零报错,可搭配NULLIF处理:

SELECT location,date, total_cases,total_deaths, 
        (CAST(total_cases AS DECIMAL(18,2)) / NULLIF(CAST(total_death AS DECIMAL(18,2)), 0))*100 AS `death percentage`
FROM 你的表名;

不同数据库专属CONVERT写法

  • MySQL版本:
SELECT location,date, total_cases,total_deaths, 
        (CONVERT(total_cases, DECIMAL(18,2)) / NULLIF(CONVERT(total_death, DECIMAL(18,2)), 0))*100 AS `death percentage`
FROM 你的表名;
  • SQL Server版本:
SELECT location,date, total_cases,total_deaths, 
        (CONVERT(DECIMAL(18,2), total_cases) / NULLIF(CONVERT(DECIMAL(18,2), total_death), 0))*100 AS [death percentage]
FROM 你的表名;

注意:如果你确认两个字段存储的都是整数值,也可以将DECIMAL(18,2)替换为INT/UNSIGNED INT减少性能开销。转换前建议先校验字段内是否存在非数字的脏数据,避免转换失败报错。

内容的提问来源于stack exchange,提问作者God'spower Sunday Ebole

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 07:36:05