在 SQL Server 2008 中连接三列时结果不正确

Incorrect results when concatenating three columns in SQL Server 2008

我有一个数据库(在 SQL Server 2008 中),其中包含网站的各个部分 URL,我正在尝试将它们连接起来以创建完整的 URL。假设这是我的数据:

                 --table1
--------server-------|---facility---|---site---|
https://example.com  |     wah      |   blah   |
https://example2.com |     foo      |   bar    |

我要输出这个:

https://example.com/wah/blah/
https://example2.com/foo/bar/

我尝试了以下查询,但都返回了相同的结果:

select server + '/' + facility + '/' + site + '/' from table1

select {fn CONCAT(server, {fn CONCAT(facility, site)})} from table1

select left(server, 128) + '/' + left(facility, 128) + '/' + left(site, 128) + '/' 
    from table1

select convert(varchar(1024), server) +  '/' + convert(varchar(1024), facility)
        + '/' + convert(varchar(1024), site) + '/'
    from table1

所有这些查询都输出这个结果:

https://example.com
https://example2.com

如果我尝试 运行 下面的代码 returns 正确的结果:

select 'aa' + '/' + 'bb'
--this code returns "aa/bb"

因此,我不认为这是我的软件中的错误。我还尝试将数据转换为 varchar(1024) 然后连接起来但没有成功。

我不确定是否需要更改某些设置,我的数据是否以某种方式损坏,或者我的代码是否不正确。任何帮助将不胜感激。如果您需要任何其他信息,请告诉我。

________________________SOLUTION_______________________

非常感谢大家。这让我非常头疼。

最终结果是每列末尾都有一个不可打印的字符。我使用下面的代码得到了想要的结果:

select left(server, len(server)-1)+ '/' +left(facility, len(facility)-1)+ '/' +left(room, len(room)-1)+ '/' 
    from table1

这个输出:

https://example.com/wah/blah/
https://example2.com/foo/bar/

再次感谢所有提供帮助的人!

检查这是否有效,它与您告诉我们的数据、数据类型和查询相同:

DECLARE @table table (server varchar(512), facility varchar(128), site varchar(128))

INSERT INTO @table
VALUES ('https://example.com','wah','blah'),
       ('https://example2.com','foo','bar')


select server + '/' + facility + '/' + site + '/' from @TABLE


select left(server, 128) + '/' + left(facility, 128) + '/' + left(site, 128) + '/' 
    from @TABLE

select convert(varchar(1024), server) +  '/' + convert(varchar(1024), facility)
        + '/' + convert(varchar(1024), site) + '/'
    from @TABLE

我想知道您的值是存储为 char() 还是 space 填充字符串。试试这个:

select rtrim(server) + '/' + rtrim(facility) + '/' + rtrim(site) + '/'
from table1