/ / sql join string match - sql, sql-server-2008, вътрешно присъединяване, съдържа

sql се присъединяват към низ съвпадение - sql, sql-server-2008, вътрешно съединяване, съдържа

нека кажем, че имам 2 таблици

ID      Product
----------------
micrsoft sql
cisco


ID      Product
----------------
sql
cisco agent
flash

Трябва да напиша заявка, която връща само "flash" като изход, тъй като няма съвпадение на таблица 1. Думите cisco и microsoft имат съвпадения на другата маса и затова трябва да се отхвърлят.

Това е повече от вътрешно присъединяване, но използванесъвпадение на шаблон / низ / съдържа. Низовете не трябва да са абсолютно съвпадение и могат да бъдат подмножество. за напр. имате Cisco в една маса и агент на Cisco в другата.

/ ****** Скрипт за SelectTopNRows команда от SSMS ****** /

SELECT
[Product]
FROM t1 INNER JOIN t2

ON t1.Product= t2.Product
order BY Product

ще удовлетворява само тези продукти, чиято стойност съвпада точно. Но аз ще трябва да запитвам дори частични съвпадения

Отговори:

1 за отговор № 1

Можеш да използваш like за тази цел:

SELECT t2.[Product]
FROM t2 LEFT JOIN
t1
ON t1.Product LIKE "%" + t2.Product + "%" OR
t2.Product LIKE "%" + t1.Product + "%"
WHERE t1.Product IS NULL
ORDER BY t2.Product;

Изпълнението няма да е добро, така че се надявам да нямате прекалено много данни.


0 за отговор № 2

Опитайте тази:

select Id, Product
from table2 t2
where ID Not IN ( Select IDFrom table1 )