SQL通配符搜索可从以搜索到的单词开头的单个字符串中查找单词?

时间:2019-06-20 17:06:53

标签: sql sql-server wildcard

假设我有一个水果表,该表在一个单元格中具有数据“ 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 :(得分:0)

您可以使用:

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

我强烈建议规范化您的架构,不要将多个值存储为单列。

答案 1 :(得分:0)

使用Full Text Search。它启用CONTAINS谓词。例如:

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

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

第一个查询返回名称包含单词Mango的所有水果。

第二个查询返回所有名称包含以Man开头的单词的水果。