gpt4 book ai didi

c# - ASP.NET 单文本框多关键词搜索

转载 作者:太空宇宙 更新时间:2023-11-03 14:58:49 25 4
gpt4 key购买 nike

现在,我有:

Upper(tb.name) LIKE Upper('%' + :SearchBox + '%')

有了这个,我可以输入一个关键字,如果它存在于 tb.name 中,它将在结果中返回。我希望能够在搜索框中输入多个关键字,以空格分隔,并返回包含所有关键字的结果。

示例:我在搜索框中输入“Ford”并返回

Name
2015 Ford SUV Blue
2016 Ford SUV Black
2017 Ford SUV Blue

我希望能够输入“Ford Blue”(或任何其他数量的关键字)以返回

Name
2015 Ford SUV Blue
2017 Ford SUV Blue

输入的任何关键字都将以空格分隔。因此,如果我输入“SUV Blue 2017”,它将是“SUV”AND“Blue”AND“2017”。 非常感谢任何帮助!

最佳答案

您需要拆分关键字字符串并找到所有关键字都存在的行。类似这样的事情(请参阅代码中的注释)。

declare @keywords varchar(max)='ford blue'

--build a series of CTE
;with split as ( --split keyword string into table
select '%'+value+'%' v from string_split(@keywords,' ')
),
cnt as ( -- always single value
select count(*) cnt from split
),
prod as(
select p.* ,
COUNT(t.v) over(partition by p.name) cnt,
ROW_NUMBER() over(partition by p.name order by p.name) rn
from tb p
--where ProductName like all -- illegal and never work
inner join split t on p.ProductName like t.v
)
select * from prod
cross join cnt -- don't afraid of Cartesian product here
where prod.cnt = cnt.cnt -- all keywords found
and rn=1 -- no duplicates

关于c# - ASP.NET 单文本框多关键词搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47382544/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com