SQL-запрос с несколькими словами поиска - PullRequest
2 голосов
/ 08 ноября 2011

Я использую следующий запрос, чтобы получить все данные, которые содержат некоторые слова (которые разделяются функцией) в столбце name таблицы inventoryLocalization.

в примере, который я имеюразделить строку "красный зеленый синий".как и должно быть, он вернул все строки, как оператор ИЛИ * 1006. *.

SELECT distinct 
inL.name
FROM dbo.[inventoryLocalization] inL
JOIN fnSplitString (N'red green blue',' ' ) words ON (inL.name LIKE '%'+ words.item +'%')

Мой вопрос: возможно ли получить строки, содержащие все слова, как в И оператор.

Ответы [ 2 ]

3 голосов
/ 09 ноября 2011
select inL.name from dbo.[inventoryLocalization] inL 
where not exists
    (select 1 from fnSplitString(N'red green blue',' ') words 
    where (inL.name NOT LIKE '%'+ words.item +'%'))
0 голосов
/ 08 ноября 2011

Попробуйте что-то вроде этого:

DECLARE @SomeWords NVARCHAR(200), @Num INT

SET @SomeWords = 'red green blue'

SELECT @Num = COUNT(*)
FROM fnSplitString (@SomeWords,' ')

SELECT inL.name
FROM dbo.[inventoryLocalization] inL
JOIN fnSplitString (@SomeWords,' ' )words 
ON (inL.name LIKE '%'+ words.item +'%')
GROUP BY inL.name
HAVING COUNT(*) = @Num
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...