Обнаружение (find) строки в другой строке (nvarchar (MAX))

#sql #tsql #sql-server-2008

#sql #tsql #sql-server-2008

Вопрос:

У меня есть столбец nvarchar (max) с разными значениями, похожими на ‘A2’

И другой столбец из другой таблицы с одинаковыми значениями ‘(A2 И A3) ИЛИ A4’

Мне нужно определить, содержит ли строка из второго столбца строку из первого столбца.

Итак, тогда мне нужно выбрать все столбцы второй таблицы, которые содержат строку из первого столбца первой таблицы.

что-то похожее … но это неправильно

 SELECT * Cols FROM T2
WHERE (SELECT T1.StringCol FROM T1) IN T2.StringCol
  

но я больше понимаю, что это нравится (в синтаксисе f #)

 for t1.date, t1.StringCol from t1
 for t2.StringCol from t2
  if t2.StringCol.Contains( t1.StringCol )
    yield t2.StringCol, t1.date
  

Ответ №1:

Это должно привести к тому, что вы хотите…

 select t2.*
from t1 cross join t2
where patindex('%'   t1.StringCol   '%', t2.StringCol) > 0