查找 column1 与 column2 匹配的行(可能在另一行中)

Find rows where column1 matches column2 (possibly in an another row)

假设我有一些来自 table 名为 Table1 的代码。

Column1   | Column2
41391175  | 41000
41523664  | 41523
110505116 | 110509
110453629 | 110505
41000     | 351592

Column1 和 Column2 是 NVARCHAR(10)。我想要的 return 是第 1 列中的所有条目,其中 Column2 在 Column1 中,所以我希望结果看起来像这样 -

Column1
41523664
110505116
41000

现在,这就是我的代码的样子-

SELECT Column1
FROM Table1
INTERSECT  
SELECT Column2
FROM Table1 ;  

但截至目前,它只能找到与 Column2 中完全相同的数字,而不是 Column1 中包含的数字,所以我只会得到这个结果-

Column1

41000

有没有办法解决这个问题,或者在 INTERSECT 中获得 IN 子句?经过一些研究,我一直没能找到能做到这一点的东西。

我想您可以使用 LIKE 运算符匹配它们:

SELECT Column1
FROM Table1 AS t
WHERE EXISTS (
    SELECT 1
    FROM Table1 AS x
    WHERE t.Column1 LIKE x.Column2 + '%'
)

Demo on DB Fiddle

select c1.column1 from table1 c1 inner join (select distinct column2 from table1) c2 on charindex(c2.column2, c1.column1) = 1