我正在尝试找出如何合并多个字段,删除它们之间的任何空格,然后将它们与另一个值进行比较。
我有以下字段:地址1,镇,县和邮政编码。 基本上,我需要将这些字符串连接起来,然后删除任何空白等。有人可以告诉我如何在以下我的以下SQL中执行此操作:
select distinct p.GtId,
p.CrmPartyId,
p.LegalName,
p.BusinessClass,
p.RmFullName,
p.PbeFullName,
p.OverallClientStatus,
p.OverallRpStatus,
a.AddressType
from CORE.WeccoParty p
join CORE.WeccoPartyAddress a ON p.GtId = a.GtId
where exists (select 1
from CORE.WeccoParty sub_p
left join CORE.WeccoPartyAddress sub_a
on sub_p.GtId = sub_a.GtId
where (p.FirstName = sub_p.FirstName
and p.LastName = sub_p.LastName
and a.Address1= sub_a.Address1
and a.Town = sub_a.Town
and a.County = sub_a.County
and a.Postcode = sub_a.Postcode
and a.GtId <> sub_a.GtId)
)
答案 0 :(得分:0)
尝试一下:
select distinct Replace(p.GtId+
p.CrmPartyId+
p.LegalName+
p.BusinessClass+
p.RmFullName+
p.PbeFullName+
p.OverallClientStatus+
p.OverallRpStatus+
a.AddressType,' ','')
from CORE.WeccoParty p
join CORE.WeccoPartyAddress a ON p.GtId = a.GtId
where exists (select 1
from CORE.WeccoParty sub_p
left join CORE.WeccoPartyAddress sub_a
on sub_p.GtId = sub_a.GtId
where (p.FirstName = sub_p.FirstName
and p.LastName = sub_p.LastName
and a.Address1= sub_a.Address1
and a.Town = sub_a.Town
and a.County = sub_a.County
and a.Postcode = sub_a.Postcode
and a.GtId <> sub_a.GtId)
)
答案 1 :(得分:0)
您可以在SQL Server中使用REPLACE和CONCAT函数。
CONCAT函数在SQL Server 2012及更高版本中有效,如果您使用的是旧版本,请使用“ + ”运算符进行连接。
如果这是您删除字符串开头和结尾的空格的要求,您还可以检查LTRIM和RTRIM函数
select distinct p.GtId,
p.CrmPartyId,
p.LegalName,
p.BusinessClass,
p.RmFullName,
p.PbeFullName,
p.OverallClientStatus,
p.OverallRpStatus,
a.AddressType
from CORE.WeccoParty p
join CORE.WeccoPartyAddress a ON p.GtId = a.GtId
where exists (select 1
from CORE.WeccoParty sub_p
left join CORE.WeccoPartyAddress sub_a
on sub_p.GtId = sub_a.GtId
where (p.FirstName = sub_p.FirstName
and p.LastName = sub_p.LastName
and REPLACE(CONCAT(a.Address1,a.Town,a.County,a.Postcode),' ','') = REPLACE(CONCAT(sub_a.Address1, sub_a.Town,sub_a.County,sub_a.Postcode),' ','')
and a.GtId <> sub_a.GtId)
)
答案 2 :(得分:0)
欢迎使用StackOverflow!通过您的标记,看起来您正在使用SQL Server。
假设您是,您可以使用以下两个功能来帮助您实现目标:
替换:https://www.techonthenet.com/sql_server/functions/replace.php
CONCAT:https://www.techonthenet.com/sql_server/functions/concat.php
REPLACE函数将简单地用''代替空格,用''代替。
然后,CONCAT函数会将它们连接在一起。
如果我正在查看您的SQL代码,并尝试根据您的描述将地址1,镇,县和邮政编码连接起来,并保留当前的所有内容,我可能会这样做:
select distinct p.GtId,
p.CrmPartyId,
p.LegalName,
p.BusinessClass,
p.RmFullName,
p.PbeFullName,
p.OverallClientStatus,
p.OverallRpStatus,
a.AddressType,
REPLACE(CONCAT(a.Address1, a.Town, a.County, a.Postcode), ' ', '')
from CORE.WeccoParty p
join CORE.WeccoPartyAddress a ON p.GtId = a.GtId
where exists (select 1
from CORE.WeccoParty sub_p
left join CORE.WeccoPartyAddress sub_a
on sub_p.GtId = sub_a.GtId
where (p.FirstName = sub_p.FirstName
and p.LastName = sub_p.LastName
and a.Address1= sub_a.Address1
and a.Town = sub_a.Town
and a.County = sub_a.County
and a.Postcode = sub_a.Postcode
and a.GtId <> sub_a.GtId)
)
我添加的行是:
REPLACE(CONCAT(a.Address1, a.Town, a.County, a.Postcode), ' ', '')
该行应在这些列的CONCATENATED STRING中用“(无)”替换''(一个空格)。
让我知道这是否回答了您的问题,或者我还能提供什么帮助。