我有一个数据库(在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
如果我尝试运行下面的代码,则返回正确的结果:
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/
再次感谢所有帮助过的人!
答案 0 :(得分:1)
检查这是否有效,它是您告诉我们的相同数据,数据类型和查询:
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
答案 1 :(得分:0)
我想知道您的值是存储为char()
还是存储为空格填充字符串。试试这个:
select rtrim(server) + '/' + rtrim(facility) + '/' + rtrim(site) + '/'
from table1