替换连接

时间:2014-08-05 07:09:05

标签: sql sql-server-2008

我有两个表Tbl_ATbl_B,数据如下

Tbl_A

Company_nm  Website

Airindia    www.airindia.coin/index.html  
Spicejet    www.spicjet.com  
indigo      indigo.com/  

Tbl_B

Company    URL

Airindia   www.airindia.co.in/index  
Spicejet   www.spicjet.com/index.html  
indigo     www.indigo.com/  

我的查询是通过在域名之后替换/删除其他字符来加入两个表的网站/网址列,从而选择公司的所有名称。最终输出应该是所有3家公司。

4 个答案:

答案 0 :(得分:1)

您可以使用substringcharindex来获取网址的第一部分:

select *
from   tbl_a a
join   tbl_b b
on     case
       when charindex('/', a.website) > 0
       then substring(a.website, 0, charindex('/', a.website))
       else a.website
       end
       =
       case
       when charindex('/', b.url) > 0
       then substring(b.url, 0, charindex('/', b.url))
       else b.url
       end

答案 1 :(得分:0)

我认为您必须为选择查询使用“模式匹配”方式。 看看Regular ExpressionsPattern Matching (Regex) 了解更多信息。

答案 2 :(得分:0)

正如@Parick所说,我做了更改,我认为使用内连接加入这两个表会更好的想法,以便在两个表之间连接匹配数据并将它们连接在一起。

select *
from   tbl_a a
inner join   tbl_b b
on     substring(a.website, 0, charindex('/', a.website)) = substring(b.url, 0, charindex('/', b.url))

答案 3 :(得分:0)

创建第三列,您可以在其中存储网站或网址,只使用域名更快地匹配&更容易。