在SQL Server中填充指定值范围的前导零字符串

时间:2014-03-20 09:55:46

标签: sql sql-server tsql padding

我已经在Pad a string with leading zeros so it's 3 characters long in SQL Server 2008

处使用了答案

在我的情况下填充带前导零的列,它是两个零,我用这个:

RIGHT('0'+ISNULL(REPLACE(<columnName>, '"', ''),''),2)

数据范围从1到99,但也包括&#39; UNK&#39;对于使用此方法截断的未知。

有没有办法解决这个问题,还是应该在我处理同一列中的文字和数字时探索不同的解决方案?

干杯

Ĵ

2 个答案:

答案 0 :(得分:2)

(第二次修订) 试试这个:

SELECT CASE WHEN LEN(ISNULL(<columnName>, '')) > 1
  THEN ISNULL(<columnName>, '')
  ELSE RIGHT ('00'+ ISNULL(<columnName>, ''), 2)
END

示例输入/输出:

Input NULL  / Ouput '00'
Input 'UNK' / Ouput 'UNK'
Input '1'   / Ouput '01'
Input '99'  / Ouput '99'

答案 1 :(得分:0)

关于@ bastos.sergio的回答:

SELECT CASE isnumeric(Val) AND len(Val) = 1 THEN '0' + Val ELSE Val END