c# - 单个表列中的多个单词搜索
问题描述
我正在创建一个简单的文本框,允许将单个单词比较到表中。如果我在文本框中输入多个关键字,则只有一个词处理多个文本,它不会获取记录。我的数据库表是-
id text keyword
1 Somting with keyword1 & Keyword3 keyword1, keyword3
2 Somting with keyword2 & Keyword3 Keyword2, Keyword3
搜索字符串就像 - 什么是 Keyword3 和 keyword1
期望的结果是在记录中显示关键字 1 和关键字 3 的 Somting
使用 c# sql
我在尝试
Create PROCEDURE [dbo].[spGetChatAutofill]
(
@term VARCHAR(255)
)
AS
begin
select id , text, keyword
from tbl
where keyword in (select keyword from fn_stringSplit(@term) ss where keyword like '%'+SplitValue+'%')
end
和功能-
ALTER function [dbo].[fn_stringSplit](@StringSplit varchar(max))
returns @table table(SplitValue varchar(10) not null)
as
begin
Declare @StartVal int
Declare @endVal int
set @StringSplit = @StringSplit + ' '
set @StartVal = 1
set @endVal = 1
while @endVal >= 0
begin
set @endVal = charindex(' ',@StringSplit,@StartVal);
insert into @table select SUBSTRING(@StringSplit,@StartVal,@endVal-1)
set @StringSplit= SUBSTRING(@StringSplit,@endVal+1, LEN(@StringSplit))
if @StringSplit = '' set @endVal= -1
end
return
end
解决方案
首先,Sql Server 2017 有STRING_SPLIT。
使用所有请求的关键字搜索行呈现过程。
Create PROCEDURE [dbo].[spGetChatAutofill]
(
@term VARCHAR(255)
)
AS
begin
select id, text, keyword
from tbl
where not exists(
select 1
from STRING_SPLIT(@term, ' ') terms
where tbl.keyword not like '%'+terms.value+'%')
end
请注意,这可能匹配部分关键字。例如,带有参数“key word”的调用将成功地在表中找到“keyword1,keyword2”。
推荐阅读
- django - Highcharts Sankey Colors 在 django 中不起作用
- java - 假设我有一个 NFD 文本,我该如何重新组合它
- mysql - 我在做同样的事情时得到一个空数组?
- c - 'HookedDeviceControl':未声明的标识符
- ios - IOS 上的 Tokbox 暂停视频“getRenderer().onPause”
- sql - 如何使用 SQLite 按日期查找层次结构中的级别
- sql - 如何在 nifi 中执行 SQL 处理器中执行“NOT IN”子句
- python - 如何索引列表中的一行
- ckeditor - 在 CKEditor 的 5 Comments 插件中使用多个侧边栏
- javascript - webflow:如何将电子邮件从一种形式传递到另一种形式?