获取两个表之间的数据匹配 - 如果至少三个字符匹配或更多

时间:2018-05-24 09:23:09

标签: sql sql-server

如何在两个表之间获得数据匹配,匹配的逻辑应该是 - 如果至少三个字符匹配或更多:

在一张表中我有:

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,但这不会给我我需要的结果:

感谢, 小号

1 个答案:

答案 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