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

SQL Select查询中null整数转空 拼接字符串去除多余0方法

问题原因
  • 核心问题是ISNULL的隐式类型转换规则:EndYr为int类型,数据类型优先级高于字符串类型的空值'',因此当EndYr为NULL时,ISNULL(WorkExperience.EndYr,'')会把空字符串自动转为int类型的0,导致拼接结果出现多余的0。
  • 同为int类型的StartYr如果为NULL,也会触发同类隐式转换问题。
解决方案

只需要先把int类型的年份字段显式转为字符串类型,再做NULL判断即可,修正后的SQL如下:

Concat(
  ISNULL(CAST(WorkExperience.StartYr AS VARCHAR(4)), ''), 
  ' ',
  ISNULL(WorkExperience.StartMonth, ''),
  ' to ', 
  ISNULL(CAST(WorkExperience.EndYr AS VARCHAR(4)), ''), 
  ISNULL(WorkExperience.EndMonth, 'Current Job '),
  '--',
  WorkExperience.PositionLevel,
  '(',
  CompanyTable.CompanyName,
  ')'
) AS 'Employment History'

如果是MySQL环境,可替换为IFNULL函数,逻辑完全一致:

Concat(
  IFNULL(CAST(WorkExperience.StartYr AS CHAR(4)), ''), 
  ' ',
  IFNULL(WorkExperience.StartMonth, ''),
  ' to ', 
  IFNULL(CAST(WorkExperience.EndYr AS CHAR(4)), ''), 
  IFNULL(WorkExperience.EndMonth, 'Current Job '),
  '--',
  WorkExperience.PositionLevel,
  '(',
  CompanyTable.CompanyName,
  ')'
) AS `Employment History`

上述写法同时兼容StartYr为NULL的场景,不会出现多余的0或异常占位。

内容的提问来源于stack exchange,提问作者SkullW0lf

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.19 15:06:09