根据田地的长度填充空间

时间:2014-03-04 05:32:19

标签: sql sql-server tsql sql-server-2005

我的SQL查询为:

select UJIdentifyer,RecordIdentity,Location,DeptTime,BayNumber,TimingPointIndicatior,
FareStageIndicatior  
from QO where UJIdentifyer='139013'

在此查询的结果中,每列的值长度都是固定的。

EG。强制要求Location列有12个字符长度。

如果它是11,则应填充一个空格,如果是10则则填充2个空格。

为此,我写道:

 select UJIdentifyer,case when len(RecordIdentity)=11 then RecordIdentity+''else when len(RecordIdentity)=10 then RecordIdentity+'  '....   from QO where UJIdentifyer='139013'

像这样,我将不得不写10-12个案例进行长度匹配。

有什么方法可以避免重复那些类似的案件吗?

1 个答案:

答案 0 :(得分:1)

试试这个: -

  case when datalength(Location ) <12 
       then Location + replicate (' ' ,12-datalength(Location))
  END

实施例: -

 Declare @var varchar(12) = 'SQL'

 Select datalength(@var) InitialLength, 
        case when datalength(@var) <12 
              then @var + replicate (' ' ,12-datalength(@var)) 
        END as PaddingExtraSpaces,
        Datalength(case when datalength(@var) <12 
                        then @var + replicate (' ' ,12-datalength(@var)) 
                  END ) FinalLength

结果

  IntialLength    PaddingExtraSpaces   FinalLength
     2               SQL                  12

使用Datalength获取包含blanks

的字符数