SQL подстановочный поиск, чтобы найти слова из одной строки, которая начинается с искомого слова? - PullRequest
1 голос
/ 20 июня 2019

Допустим, у меня есть таблица фруктов, в которой в отдельной ячейке содержатся данные «Apple Mango Banana Guava».

declare @label nvarchar(255) = 'ango' 
select fruit from fruits 
where fruit like '%'+@label+'%'

С помощью приведенного выше запроса я получаю результат для частичного совпадения, но хочу, чтобы онработать только в том случае, если точное слово соответствует строке «Apple Mango Banana Guava».

Например: он должен показывать мне результат, если я ищу Mango, а не ango.

Ответы [ 2 ]

0 голосов
/ 20 июня 2019

Использование Полнотекстовый поиск .Включает предикат CONTAINS .Например:

SELECT *
FROM Fruits
WHERE CONTAINS(FruitName, '"Mango"')

SELECT *
FROM Fruits
WHERE CONTAINS(FruitName, '"Man*"')

Первый запрос возвращает все фрукты, в имени которых содержится слово Mango.

Второй запрос возвращает все фрукты, в имени которых содержится слово, начинающееся с Man.

0 голосов
/ 20 июня 2019

Вы можете использовать:

declare @label nvarchar(255) = 'ango' 
select fruit from fruits 
where (' ' + fruit + ' ') like '% '+@label+' %'

Я настоятельно рекомендую нормализовать вашу схему и не хранить несколько значений в виде одного столбца.

...