查找具有空格SQL模式匹配的单词

查找具有空格SQL模式匹配的单词,sql,sql-server,tsql,pattern-matching,Sql,Sql Server,Tsql,Pattern Matching,我有一列数据油76072 KTC蔬菜(塑料桶)20ltr 我想检查Veg在数据中是否作为单个单词可用。它可以是第一个、最后一个或介于两者之间的单词,如KTC 下面的查询返回Veg和KTC的数据 SELECT Item, Description, SearchBox, Ranking, 'Part Word Match' as SearchType FROM [HypEcommerce].[dbo].[ProductSearch] WHERE (

我有一列数据
油76072 KTC蔬菜(塑料桶)20ltr

我想检查
Veg
在数据中是否作为单个单词可用。它可以是第一个、最后一个或介于两者之间的单词,如
KTC

下面的查询返回
Veg
KTC
的数据

SELECT
    Item,
    Description,
    SearchBox,
    Ranking,
    'Part Word Match' as SearchType 
FROM
    [HypEcommerce].[dbo].[ProductSearch]
WHERE (
    [searchbox] like '%_' + trim(ltrim('veg')) +'_%'
    OR [searchbox] like '%_'+ rtrim(ltrim('veg'))+ ''
    OR [searchbox] like ''+ rtrim(ltrim('veg')) +'_%'    
)

如果我理解正确,您希望:

WHERE ' ' + searchbox] + ' ' like '% ' + ' + trim(ltrim('veg')) + ' %'
我想检查Veg在dat中是否作为单个单词可用

因为它可以在任何地方,所以您可以使用

SELECT *
FROM T
WHERE LOWER(Value) LIKE '% veg %'
      OR
      RIGHT(LOWER(Value), 4) = ' veg'
      OR
      LEFT(LOWER(Value), 4) = 'veg '


您需要检查3个案例的开始、中间或结尾,如< <代码> >运算符:

SELECT
    Item,
    Description,
    SearchBox,
    Ranking,
    'Part Word Match' as SearchType 
FROM
    [HypEcommerce].[dbo].[ProductSearch]
WHERE (
    [searchbox] like 'veg %' or 
    [searchbox] like '% veg %' or 
    [searchbox] like '% veg'    
)
我想还会有其他情况,比如
(veg…


或者,如果还有
Veg
Veg
,使用
LOWER([searchbox])
,使用正则表达式很容易,不幸的是

因此,您必须像使用一样使用三分支测试。我刚刚更新了您的查询,以避免ulgy重复出现
rtrim/ltrim

SELECT
    Item,
    Description,
    SearchBox,
    Ranking,
    'Part Word Match' as SearchType 
FROM
    [HypEcommerce].[dbo].[ProductSearch]
WHERE (
       veg like        [searchbox] + ' %' -- match at beginning
    OR veg like '% ' + [searchbox] + ' %' -- match in the middle
    OR veg like '% ' + [searchbox]        -- match at end 

);

请标记正在使用的数据库管理系统。我真的不明白,为什么你不能像“%VEG%”那样使用上面的(搜索框)呢?解析单词的语法是什么?是否希望以下所有项都匹配:
“退出!”
“吃素!”
“松鼠(素食)紫色$”
“版本:X9.VEG;2.1“
”/食品/蔬菜/茄子/油炸“
?模式可能是
空或非字母数字
目标字符串
空或非字母数字
SELECT
    Item,
    Description,
    SearchBox,
    Ranking,
    'Part Word Match' as SearchType 
FROM
    [HypEcommerce].[dbo].[ProductSearch]
WHERE (
    [searchbox] like 'veg %' or 
    [searchbox] like '% veg %' or 
    [searchbox] like '% veg'    
)
SELECT
    Item,
    Description,
    SearchBox,
    Ranking,
    'Part Word Match' as SearchType 
FROM
    [HypEcommerce].[dbo].[ProductSearch]
WHERE (
       veg like        [searchbox] + ' %' -- match at beginning
    OR veg like '% ' + [searchbox] + ' %' -- match in the middle
    OR veg like '% ' + [searchbox]        -- match at end 

);