代码之家  ›  专栏  ›  技术社区  ›  TGnat

在多个模式上使用相似比较

  •  1
  • TGnat  · 技术社区  · 15 年前

    我希望能够基于包含在另一个表中的多个模式来匹配一个字段,有点相似,并且在子句中进行相似比较。下面的查询显然不起作用,但它表示了我要完成的任务。

    SELECT * 
    FROM TableA 
    WHERE TableA.RegCode Like (
        SELECT '%' + TableB.PartialRegCode + '%'
        FROM TableB)
    

    如果有更好的方法,我宁愿不使用光标。

    2 回复  |  直到 15 年前
        1
  •  4
  •   D'Arcy Rittich    15 年前
    SELECT * 
    FROM TableA a
    INNER JOIN TableB b on a.RegCode like '%' + b.PartialRegCode + '%'
    
        2
  •  1
  •   Aaron    15 年前

    如果您希望返回与任何模式匹配的行,那么应该可以:

    SELECT *
    FROM TableA
         JOIN TableB
         ON TableA.RegCode LIKE '%' + TableB.PartialRegCode + '%'
    

    如果您希望返回与所有模式匹配的行,那么应该可以:

    SELECT *
    FROM TableA
    WHERE ID in
    (
        SELECT TableA.ID
        FROM TableA
             JOIN TableB
             ON TableA.RegCode LIKE '%' + TableB.PartialRegCode + '%'
        WHERE COUNT(*) = (SELECT COUNT(*) FROM TableB)
        GROUP BY TableA.ID
    )