SQL如何实现GPA字段空值转空白、非空值保留三位小数的单语句编写
GPA字段输出规则实现(单条SQL语句)
最终整合语句(SQL Server方言)
ISNULL(CAST(NULLIF(CAST(ROUND(termgpa.gpa, 3) AS DECIMAL(18, 3)), 0) AS VARCHAR), ' ')
逻辑说明
- 内层先执行
ROUND(termgpa.gpa, 3)完成GPA值四舍五入保留3位小数的计算 - 通过
CAST( ... AS DECIMAL(18, 3))固定小数位格式,避免隐式转换丢失精度 - 用
NULLIF将0值转为NULL,匹配你原有语句中过滤0值的需求 - 最后转成字符串类型后,用
ISNULL将所有NULL场景(原GPA为空、0值转换后的NULL)统一替换为空白字符串
其他数据库方言适配
如果使用MySQL,将ISNULL替换为IFNULL即可:
IFNULL(CAST(NULLIF(CAST(ROUND(termgpa.gpa, 3) AS DECIMAL(18, 3)), 0) AS CHAR), ' ')
内容的提问来源于stack exchange,提问作者KLR
相关产品推荐
相关产品推荐

