检查一列的值是否在另一张表的列中,并返回另一列的值

时间:2018-12-28 19:31:28

标签: sql sql-server tsql sql-server-2012

我有2个表,其中一个列类似,称为“ Re”,但是表1中的“ Re”列是一个列表,如下所示。

我想搜索Table2.Re是否在Table1.Re中,如果是,则返回Table1.FiN。

表1

 FiN       Re
  A     ,1,2,3,4
  B     ,6,7,8,9
  C     ,3,5,6,7
  D     ,7,10,11,24

表2

Re   
3
5
6
9

2 个答案:

答案 0 :(得分:2)

您可以尝试使用LIKE

SELECT t1.[FiN]
       FROM [Table 2] t2
            INNER JOIN [Table 1] t1
                       ON t1.[Re] LIKE concat('%,', t2.[Re], ',%');

但请注意,您不应该使用逗号分隔的列表。

答案 1 :(得分:0)

就像我们使用INSTR(..)来检查实际字符串中子字符串是否存在一样(在这种情况下,CHARINDEX(..)将执行相同的操作,如果它匹配则值将大于0。因此,您获得所需的输出。

 SELECT  t2.RE FROM TABLE2 t2
 JOIN TABLE1 t1
 ON
 CHARINDEX(t1.re, t2.re)>0;

或 Mak将like用作

     SELECT  t2.RE FROM TABLE2 t2
      JOIN TABLE1 t1
      ON
      t1.re LIKE "%,"+ t2.re + "%,";