Вам нужно выражение, который показывает, сколько столбцов соответствует, а затем сравнить его с количеством столбцов, которые необходимо чтобы соответствовать.
Что-то вроде этого:
where
-- How many columns matched?
-- Score 1 for each matching column
0
+ case when column1 = @search1 then 1 else 0 end
+ case when column2 = @search2 then 1 else 0 end
+ case when column3 = @search3 then 1 else 0 end
+ case when column4 = @search4 then 1 else 0 end
+ case when column5 = @search5 then 1 else 0 end
+ case when column6 = @search6 then 1 else 0 end
+ case when column7 = @search7 then 1 else 0 end
+ case when column8 = @search8 then 1 else 0 end
+ case when column9 = @search9 then 1 else 0 end
+ case when column10 = @search10 then 1 else 0 end
>= 8
Вы можете обобщить этот подход дает различные результаты для разных столбцов.
Обратите внимание, что этот подход не будет использовать индексы в любом столбце поиска.
Однако, если в нескольких столбцах есть индексы, вы можете улучшить производительность, используя их. (Чтобы соответствовать восьми из десяти столбцов, используя индексы, по крайней мере три столбца должны иметь индекс).
Просьба предоставить некоторые образцы данных и ожидаемый результат. – sagi