На основе вашего примера, вот как вы можете сделать то, что вы пытаетесь сделать.
Сначала давайте создадим несколько тестовых данных:
CREATE TABLE #table_a (id INT IDENTITY(1,1), string VARCHAR(15))
CREATE TABLE #table_b (id INT IDENTITY(1,1), substr VARCHAR(15))
INSERT INTO #table_a
(string)
VALUES ('stack'),('overflow')
INSERT INTO #table_b
(substr)
VALUES ('s'),('o')
Теперь вы можете запрашивать ваши данные, присоединяется только тогда, когда b.substr
находится в a.string
.
SELECT a.*
,b.substr
FROM #table_a a
LEFT JOIN #table_b b ON CHARINDEX(b.substr,a.string) > 0
Это даст вам все строки из #table_a
и значений b.substr
, которые находятся внутри a.string
.Если совпадений нет, b.substr
вернется как NULL
.Измените объединение на INNER JOIN
, если вам нужны только записи, в которых есть совпадение.
Результаты:
id string substr
1 stack s
2 overflow o