Множественные операторы LIKE в TSQL

Это то, чего я пытаюсь достичь в простейшей форме:

SELECT 
    p.ProductId,
    p.ProductName,
    p.SKU
FROM tbl_Product p
WHERE (p.ProductName LIKE '%white%' OR p.SKU LIKE '%white%')
AND (p.ProductName LIKE '%cup%' OR p.SKU LIKE '%cup%')

Я пытаюсь сделать это в пользовательской функции, которая принимает параметр всех условий поиска, разделенных запятыми..

Я попытался разбить этот параметр на временную таблицу и попробовать выполнить соединение, как это:

DECLARE @SearchText nvarchar(1000) SELECT @SearchText='white,cup'

DECLARE @SearchTerms TABLE (String nvarchar(200))
INSERT INTO @SearchTerms (String)
SELECT '%' + String + '%' FROM dbo.CsvSplitString(@SearchText)

SELECT 
    p.ProductId,
    p.ProductName,
    p.SKU
FROM tbl_Product p
JOIN @SearchTerms s ON (p.ProductName LIKE s.String OR p.SKU LIKE s.String)

Но это не возвращает то, что я хочу -Я возвращаю любые записи, в которых имя или SKU соответствует любому из условий поиска. Мне нужно, чтобы он возвращался как первый запрос, где Name или SKU соответствуют всем условиям поиска (Я думаю, что это имеет смысл ).

Был бы очень признателен за толчок в правильном направлении -дайте мне знать, если вам нужно, чтобы я был более конкретным.

Примечание. :полнотекстовый поиск в настоящее время невозможен.

Спасибо!

7
задан royse41 24 April 2012 в 14:33
поделиться