SQL 通配符搜索以从以搜索词开头的单个字符串中查找词?
SQL wildcard search to find words from a single string that begins with the searched word?
假设我的水果 table 在一个单元格中有数据 'Apple Mango Banana Guava'。
declare @label nvarchar(255) = 'ango'
select fruit from fruits
where fruit like '%'+@label+'%'
通过上述查询,我得到了部分匹配的结果,但我希望它仅在确切单词与字符串 'Apple Mango Banana Guava' 匹配时才起作用。
Eg: It should show me the result if I search for Mango, not for ango.
您可以使用:
declare @label nvarchar(255) = 'ango'
select fruit from fruits
where (' ' + fruit + ' ') like '% '+@label+' %'
我强烈建议规范化您的架构并且不要将多个值存储为单个列。
使用Full Text Search. It enables CONTAINS谓词。例如:
SELECT *
FROM Fruits
WHERE CONTAINS(FruitName, '"Mango"')
SELECT *
FROM Fruits
WHERE CONTAINS(FruitName, '"Man*"')
第一个查询returns所有名称中含有Mango字样的水果
第二个查询returns所有名称中以Man开头的水果
假设我的水果 table 在一个单元格中有数据 'Apple Mango Banana Guava'。
declare @label nvarchar(255) = 'ango'
select fruit from fruits
where fruit like '%'+@label+'%'
通过上述查询,我得到了部分匹配的结果,但我希望它仅在确切单词与字符串 'Apple Mango Banana Guava' 匹配时才起作用。
Eg: It should show me the result if I search for Mango, not for ango.
您可以使用:
declare @label nvarchar(255) = 'ango'
select fruit from fruits
where (' ' + fruit + ' ') like '% '+@label+' %'
我强烈建议规范化您的架构并且不要将多个值存储为单个列。
使用Full Text Search. It enables CONTAINS谓词。例如:
SELECT *
FROM Fruits
WHERE CONTAINS(FruitName, '"Mango"')
SELECT *
FROM Fruits
WHERE CONTAINS(FruitName, '"Man*"')
第一个查询returns所有名称中含有Mango字样的水果
第二个查询returns所有名称中以Man开头的水果