Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Tsql 在多个模式上使用Like比较_Tsql_Sql Server 2008 - Fatal编程技术网

Tsql 在多个模式上使用Like比较

Tsql 在多个模式上使用Like比较,tsql,sql-server-2008,Tsql,Sql Server 2008,我希望能够基于另一个表中包含的多个模式匹配单个字段,类似于用于类似比较的like和in子句。下面的查询显然不起作用,但它表达了我试图实现的目标 SELECT * FROM TableA WHERE TableA.RegCode Like ( SELECT '%' + TableB.PartialRegCode + '%' FROM TableB) 如果有更好的方法,我宁愿不使用游标。如果您希望返回与任何模式匹配的行,这应该可以: SELECT * FROM TableA

我希望能够基于另一个表中包含的多个模式匹配单个字段,类似于用于类似比较的like和in子句。下面的查询显然不起作用,但它表达了我试图实现的目标

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

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

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

SELECT * 
FROM TableA a
INNER JOIN TableB b on a.RegCode like '%' + b.PartialRegCode + '%'
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
)

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

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
)

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

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
)

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

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
)

是否要返回任意多个模式或所有模式的行?是否要返回任意多个模式或所有模式的行?