如何在两个表之间获得数据匹配,匹配的逻辑应该是 - 如果至少三个字符匹配或更多:
在一张表中我有:
Assets
--------
MADFG
NGGS_Data
KTL_GAS_LCN
FI
在另一张表中:
Asset
------------
VERT
NGS
KTLGAS
FIP
作为我需要的输出:
Asset_table1 Asset_table2
----------- ------------
NGGS_Data NGS
KTL_GAS_LCN KTLGAS
我试图使用此示例中的查询link,但这不会给我我需要的结果:
感谢, 小号
答案 0 :(得分:1)
您可能需要使用递归CTE。这给出了期望的结果。
CREATE TABLE #Assets(Assets VARCHAR(20))
CREATE TABLE #Asset(Asset VARCHAR(20))
INSERT INTO #Assets VALUES
('MADFG')
,('NGGS_Data')
,('KTL_GAS_LCN')
,('FI')
INSERT INTO #Asset VALUES
('VERT')
,('NGS')
,('KTLGAS')
,('FIP')
;WITH cteAssets AS
(
SELECT
Assets
,left(Assets,2) Char2
,RIGHT(Assets,len(assets)-1) Rem
FROM
#Assets
WHERE len(Assets) >= 3
UNION ALL
SELECT
Assets
,left(Rem,2) Char2
,RIGHT(Rem,len(Rem)-1) Rem
FROM
cteAssets
WHERE len(Rem) >= 2
)
SELECT DISTINCT
A.Assets
,B.Asset
FROM
cteAssets A
INNER JOIN #Asset B
ON
CHARINDEX(A.Char2,B.Asset,0) > 0