Like 的 SQL 替代方案返回精确匹配(即?

发布于 2024-09-24 20:05:33 字数 283 浏览 8 评论 0原文

我需要它返回精确匹配,同时仍然能够使用通配符。

因此,当搜索“carb”时,我想返回一个值,例如“Racing Carb” 但我不想返回诸如“赛车化油器”之类的值,

这就是我现在拥有的......

SELECT  I.SKU, I.[Description]
FROM    Inventory AS I  
INNER JOIN MisspelledWords AS M
ON I.[Description] like   '%' + M.[Word] + '%'

I need this to return an exact match while still being able to use the wild card.

So when searching for 'carb' i want to return a value such as 'Racing Carb'
but i do not want to return a value such as 'Racing Carburetor'

This is what I have now...

SELECT  I.SKU, I.[Description]
FROM    Inventory AS I  
INNER JOIN MisspelledWords AS M
ON I.[Description] like   '%' + M.[Word] + '%'

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

喵星人汪星人 2024-10-01 20:05:33

试试这个:

ON I.[Description] like '%[^a-z]' + M.[Word] + '[^a-z]%'

更新

declare @word varchar(100)
set @word = 'carb' 

select 1 
where  'Racing Carburetor' like '%[^a-z]' + @word + '[^a-z]%'

不返回任何内容,这意味着未选择“赛车化油器”。

更新 2

declare @searchWord varchar(100), @tableWord varchar(100)
select @searchWord = 'carburetor' 
,@tableWord = 'Racing Carburetor'

select 1 
where  @tableWord like '%[^a-z]' + @searchWord + '[^a-z]%'
or @tableWord like @searchWord + '[^a-z]%'
or @tableWord like '%[^a-z]' + @searchWord 

此更新涉及边缘案例。

Try this:

ON I.[Description] like '%[^a-z]' + M.[Word] + '[^a-z]%'

Update

declare @word varchar(100)
set @word = 'carb' 

select 1 
where  'Racing Carburetor' like '%[^a-z]' + @word + '[^a-z]%'

Returns nothing, which means that 'Racing Carburator' isn't getting selected.

Update 2

declare @searchWord varchar(100), @tableWord varchar(100)
select @searchWord = 'carburetor' 
,@tableWord = 'Racing Carburetor'

select 1 
where  @tableWord like '%[^a-z]' + @searchWord + '[^a-z]%'
or @tableWord like @searchWord + '[^a-z]%'
or @tableWord like '%[^a-z]' + @searchWord 

This one deals with marginal cases.

漆黑的白昼 2024-10-01 20:05:33

不知道mysql或ms-sql,但你可以在oracle中使用regexp_like函数。

Dunno about mysql or ms-sql, but you can use regexp_like function in oracle.

二手情话 2024-10-01 20:05:33

尝试

(field like '%carb' or field like '%carb %')

这将匹配 racing carbcarb for racing 但不匹配 <代码>赛车化油器或赛车化油器

try

(field like '%carb' or field like '%carb %')

This will match racing carb and carb for racing but not racing carburator or carburator for racing.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文