2

我有一个存储过程。我传入 1 个变量,称为@p_FRchar(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
4

2 回答 2

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
于 2012-05-15T20:23:10.203 回答
1

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

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

于 2012-05-15T21:04:42.843 回答