Sql 当固定长度的select查询返回null时显示零

Sql 当固定长度的select查询返回null时显示零,sql,tsql,Sql,Tsql,我需要从数据库表中获取固定长度的值。下面是查询 select cast(TrackID as char(4)) as TrackID , cast(Tracknumber as char(5)) as Tracknumber from Tracking 当列值为null或空时,我希望显示相同数量的零 您可以使用coalesce/case: 需要强制转换,因此结果是字符串,而不是数字 数字不能为空而不为空。如果该值实际上是一个字符串,则需要稍微复杂一些的逻辑: select cast(T

我需要从数据库表中获取固定长度的值。下面是查询

 select cast(TrackID as char(4)) as TrackID ,
 cast(Tracknumber as char(5)) as Tracknumber 
 from Tracking
当列值为null或空时,我希望显示相同数量的零

您可以使用coalesce/case:

需要强制转换,因此结果是字符串,而不是数字

数字不能为空而不为空。如果该值实际上是一个字符串,则需要稍微复杂一些的逻辑:

select cast(TrackID as char(4)) as TrackID ,
       (case when Tracknumber is null or Tracknumber = ''
             then '00000'
             else cast(Tracknumber as char(5))
        end) as Tracknumber 
from Tracking;
您可以使用coalesce/case:

需要强制转换,因此结果是字符串,而不是数字

数字不能为空而不为空。如果该值实际上是一个字符串,则需要稍微复杂一些的逻辑:

select cast(TrackID as char(4)) as TrackID ,
       (case when Tracknumber is null or Tracknumber = ''
             then '00000'
             else cast(Tracknumber as char(5))
        end) as Tracknumber 
from Tracking;
就这么做吧

 select cast(TrackID as char(4)) as TrackID ,
 isnull(nullif(cast(Tracknumber as char(5)),''),'00000') as Tracknumber 
 from Tracking
就这么做吧

 select cast(TrackID as char(4)) as TrackID ,
 isnull(nullif(cast(Tracknumber as char(5)),''),'00000') as Tracknumber 
 from Tracking

您可以使用COALESCENULLIFTracknumber,“00000”,如果它是string@Tim,我需要显示固定长度value@Gordon,第一个仍然显示为空,而不是null的零。第二个有语法问题,关键字“end”…@Abdul…附近的语法不正确。第一个现在应该适合你了。问题是TrackNumber是一个数字。你需要让它成为一根线。显式强制转换是必需的。如果值为Null,则显示为空。如果值为空,则可以使用COALESCENULLIFTracknumber,“00000”string@Tim,我需要显示固定长度value@Gordon,第一个仍然显示为空,而不是null的零。第二个有语法问题,关键字“end”…@Abdul…附近的语法不正确。第一个现在应该适合你了。问题是TrackNumber是一个数字。你需要让它成为一根线。需要显式强制转换。当值为null时,它显示为空