2012-05-15 83 views
2

我有一个存储过程。我传入一个变量,称为@p_FR,它是一个char(6)。但是,传递的值不总是6个字符。有时候这个值只有4或5个字符。我需要确保字符串总是6个字符。例如,如果@p_FR是8534,然后我需要添加2领先的0至@p_FR,所以这将是008534.将前导字符添加到SQL中的字符串中

我试图做

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

任何特定的DBMS?可能使用的字符串函数不一定全部相同 – PinnyM

+0

** SQL **只是结构化查询语言 - 许多数据库系统使用的语言 - SQL是** NOT **数据库产品...我们真的需要知道你正在使用什么数据库系统.... –

+0

想通了。 @p_FR需要是一个varchar。 – CurtisHx

回答

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

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

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