我遇到过这种情况,其中我尝试连接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 !!
答案 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)