SQL 查询以检查从另一个结果集提供的“类似‘%’字符串数组‘%’”。

SQL query to check `like '%' array of strings '%' ` supplied from another result set.

我有两个表:t1 和 t2。共有三个步骤:在 t1 select a Set_of_strings 中,id = 1(“1a”和“3c”)。来自 t1 select 对应于 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%' 是安全的,因为所有条目都具有相同的格式 e.i。 TXT 列中没有 1a2

看看这是否有效:

SELECT DISTINCT
    t2.TXT 
FROM 
    t2
    INNER JOIN t1 ON
        t1.ID=1 AND
        t2.TXT LIKE '%'+t1.NAME+'%'
WHERE 
    t2.OPTIONID = 'A';

我想你只是想要加入

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