查找 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 + '%'
)
select c1.column1 from table1 c1 inner join (select distinct column2 from table1) c2 on charindex(c2.column2, c1.column1) = 1
假设我有一些来自 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 + '%'
)
select c1.column1 from table1 c1 inner join (select distinct column2 from table1) c2 on charindex(c2.column2, c1.column1) = 1