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

用于检查从另一个结果集提供的字符串“%”的“like%”数组的SQL查询。

  •  1
  • Stepan  · 技术社区  · 9 年前

    我有两个表:t1和t2。有三个步骤:在t1中选择id=1的一组字符串(“1a”和“3c”)。从t1中选择对应于OPTIONID='A'的字符串,并包含Set_of_strings中的子字符串。

    t1

    ID  NAME   
    1   "1a"   
    2   "2b"   
    1   "3c"   
    

    t2

    OPTIONID    TXT   
      A     "7h 9t"   
      B     "1a 8n"   
      A     "2b 4r"    
      A     "3c 6u" 
    

    SELECT 
        NAME 
    FROM t1 
    WHERE ID = 1; -- 1a, 3c
    
    SELECT
        TXT 
    FROM t2 
    WHERE OPTIONID = 'A' AND (TXT LIKE '%1a%' OR TXT LIKE '%3c%') --"3c 6u"
    

    TXT LIKE '%1a%' OR TXT LIKE '%3c%' 部分


    LIKE'%1a%' 是安全的,因为所有条目都具有相同的格式,即没有 1a2 在里面 TXT 柱

    2 回复  |  直到 9 年前
        1
  •  2
  •   TT.    9 年前

    SELECT DISTINCT
        t2.TXT 
    FROM 
        t2
        INNER JOIN t1 ON
            t1.ID=1 AND
            t2.TXT LIKE '%'+t1.NAME+'%'
    WHERE 
        t2.OPTIONID = 'A';
    
        2
  •  1
  •   Hogan    9 年前

    我想你只是想加入

    SELECT TXT 
    FROM t2
    JOIN t1 on t2.TXT = t1.NAME and t1.ID = 1
    WHERE OPTIONID = 'A'