我有一个存储过程。我传入一个名为@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
答案 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。