我有两个表Tbl_A
和Tbl_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家公司。
答案 0 :(得分:1)
您可以使用substring
和charindex
来获取网址的第一部分:
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 Expressions 和Pattern 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)
创建第三列,您可以在其中存储网站或网址,只使用域名更快地匹配&更容易。