2017-06-02 43 views
1

我需要从数据库表中获取固定长度的值。以下是查询当选择查询固定长度返回空值时显示零值

select cast(TrackID as char(4)) as TrackID , 
cast(Tracknumber as char(5)) as Tracknumber 
from Tracking 

我想显示相同数量的零时列值为空或空。

TrackID -- TrackNumber 

2121 -- 34343 

3423 -- 00000 

回答

0

只是这样做......

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

谢谢@Ravi,它工作 – Abdul

5

您可以使用coalesce()/case:需要

select cast(TrackID as char(4)) as TrackID , 
     coalesce(cast(Tracknumber as char(5)), '00000') as Tracknumber 
from Tracking; 

演员这样的结果是一个字符串,而不是数字。

如果不是“NULL”,“数字”不能为“空”。如果该值确实是一个字符串,那么你需要稍微更复杂的逻辑:

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; 
+2

你可以用'COALESCE(NULLIF(轨段编号, ''),' 00000')'如果它是一个字符串 –

+0

@Tim,我需要显示固定长度值 – Abdul

+0

@Gordon,第一个仍然显示为null而不是零的空值。第二个语法问题是“关键字附近的语法不正确”。“ – Abdul