将空整数转换为select中的空格SQL



我正在做一个数据库,其中选择了就业开始日期和结束日期,然后显示

我的代码是这样的:

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

在WorkExperience.StartYr中,存在空值。其数据类型为int

我的结果是:

1990 Jul to 1992 May--Executive(MidEast Bank)
1993 Jan to 0Current Job --Director(Astons System and Maintenance)
1980 Jan to 1982 May--Executive(Huat Heng Construction)
1984 Jun to 1990 Dec--Manager(Good Earth PTE LTD)
1991 Feb to 0Current Job --Senior Management(Huat Heng Construction)
1999 Apr to 0Current Job --Manager(MidEast Bank)
2012 Aug to 0Current Job --Jr Executive(Huat Heng Construction)

我想去掉第2、5、6和7行中的"0"获取

1993 Jan to Current Job --Director(Astons System and Maintenance)

我该怎么做?

编辑:感谢您的帮助,问题已修复

您可以使用:

Concat(WorkExperience.StartYr, ' ',
WorkExperience.StartMonth, ' to ', 
WorkExperience.EndYr, 
coalesce(WorkExperience.EndMonth, ' Current Job '), '--',
WorkExperience.PositionLevel,
'(',CompanyTable.CompanyName, ')'
) AS Employment_History

也就是说,移除ISNULL()CONCAT()忽略NULL的值。您认为正在用空字符串替换NULL值。但是,该列是一个数字,因此ISNULL()的结果被转换为一个数字。因此CCD_ 7。

请注意,我还将列的名称更改为Employment_History,因此不需要对其进行转义。一般来说,字符串和日期常量只能使用单引号。列名不要使用单引号。它们很容易与字符串常量混淆。

由于数据类型的优先级,您需要在ISNULL之前转换EndYr

或者另一种选择是使用第二个CONCAT,它将为您转换。

CONCAT(
WorkExperience.StartYr,
' ',
WorkExperience.StartMonth,
' to ', 
ISNULL(
CAST(WorkExperience.EndYr AS varchar(4)) + ' ' + WorkExperience.EndMonth
,'Current Job '),
'--',
WorkExperience.PositionLevel,
'(',
CompanyTable.CompanyName,
')'
) AS [Employment History]
CONCAT(
WorkExperience.StartYr,
' ',
WorkExperience.StartMonth,
' to ', 
ISNULL(
CONCAT(WorkExperience.EndYr, ' ', WorkExperience.EndMonth)
,'Current Job '),
'--',
WorkExperience.PositionLevel,
'(',
CompanyTable.CompanyName,
')'
) AS [Employment History]

最新更新