无法在SQL中连接Char数据类型和字符串

时间:2018-04-02 05:05:03

标签: sql-server

我遇到过这种情况,其中我尝试连接Char数据类型变量和字符串,但结果非常令人惊讶。

declare @Var char(10) = 546875.5
set @Var = @Var + '100' 
select @Var

输出:546875.5

我试图增加变量的大小,但结果仍然相同。

declare @Var char(100) = 546875.5
set @Var = @Var + '100' 
select @Var

输出:546875.5

当我颠倒连接时,字符串确实连接起来了:

declare @Var char(10) = 546875.5
set @Var = '100' + @Var 
select @Var

输出:100546875。

任何人都可以帮我解决这个谜。

请注意::我知道我可以在连接之前转换它们,这样就可以达到目的。但我不确定为什么这不起作用。

TIA !!

3 个答案:

答案 0 :(得分:2)

@Var右边填充空格,因为你使用了char而不是varchar。空间占据了整个可用长度,因此无法追加“100”。

可以看到:

declare @Var char(100) = 546875.5 
set @Var = @Var + '100' 
select replace(@Var, ' ', 'X')

将@Var改为varchar,你会没事的。 (而且你至少需要11个字符)。

declare @Var varchar(11) = 546875.5 
set @Var = @Var + '100' 
select @Var

答案 1 :(得分:2)

如果您要使用char数据类型,则需要向该变量声明另一个char类型变量和set concat值。

DECLARE @Var CHAR(10)='546875.5'
DECLARE @FinalVar CHAR(15)
SET @FinalVar=@Var + '100'
SELECT replace(@FinalVar,' ','')

感谢。

答案 2 :(得分:1)

您需要的只是在连接

之前修剪前导和尾随空格
declare @Var CHAR(100) = 546875.5
SET @Var = LTRIM(RTRIM(@Var)) + '100' 
SELECT @Var

结果

enter image description here