在SQL中将前导字符添加到字符串

时间:2012-05-15 20:20:58

标签: sql string

我有一个存储过程。我传入一个名为@p_FR的变量,它是一个char(6)。但是,传递的值不总是6个字符长。有时值只有4或5个字符长。我需要确保字符串总是6个字符长。例如,如果@p_FR是8534,那么我需要将2个前导0添加到@p_FR,因此它将是008534。

我试过

set @fr = right('000000', @p_FR, 6)

@fr是varchar(6)

但当@p_FR为8534时,@ fr仍为8534.我需要它为008534。

我还在一个新查询中设置了以下代码块,我仍然得到8534。

declare @p_FR as char(6),
    @fr as varchar(6)
set @p_FR = '8534'
set @fr = right('000000' + @p_FR, 6) 
select @fr

2 个答案:

答案 0 :(得分:4)

使用rtrim删除空白:

declare @p_FR as char(6),
    @fr as varchar(6)
set @p_FR = '8534'
set @fr = right('000000' + rtrim(@p_FR), 6) 
select @fr

答案 1 :(得分:1)

我认为解决问题的最简单方法是使用varchar(6)而不是char(6)这样做你不必担心尾随空格,因为varchar只存储字符串而不包括尾随空格填满。

如果那不是一个选项,那么你可以使用RTRIM(@p_FR),假设你的RDBMS支持RTRIM。您没有指定您正在使用的RDBMS,但我假设某种SQL Server。