查找具有空格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
);