我的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个案例进行长度匹配。
有什么方法可以避免重复那些类似的案件吗?
答案 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