【发布时间】:2019-12-31 08:41:08
【问题描述】:
请帮忙修复我的sql函数!
在我的 sql 函数中,我有一个临时表
参数传递给函数@searchstring ---- "'%carrots%' AND tmp.ItemDescription like '%baby%'"
Declare @tempvalues table (itemdescription nvarchar(max))
@tempvalues VALUES
-----------------------
CARROTS, BABY, CLASS I, FRESH
CARROTS, BABY, FROZEN
CARROTS, CLASS I, FRESH
------------------
所以在函数 iam 中传递值以使用类似查询搜索数据,如果匹配,我需要在另一个表中插入数据 喜欢
在下面的 temptable 中如果匹配我需要插入 1 作为对应的行
Declare @tempfinal table (itemdescription nvarchar(max),matchcontains int)
**insert into @tempfinal select ItemDescription,'1'as matchcontains from @tempvalues tmp where tmp.ItemDescription like @searchstring**
但@tempfinal 中没有插入任何内容
我需要搜索所有匹配的单词
请帮忙寻找解决办法
示例函数
CREATE FUNCTION dbo.UDF_PredictItems_testfreetextdemo
(
@FTSExpression NVARCHAR(4000)
)
RETURNS @Result TABLE
(
itemdescription NVARCHAR(4000),
matchcontains int
)
AS
BEGIN
Declare @tempvalues table (itemdescription nvarchar(max))
insert into @tempvalues values ('CARROTS, BABY, CLASS I, FRESH') ,
('CARROTS, BABY, FROZEN 2.5 KGS') ,
('CAKE, CARROT, FROZEN 1 KGS') ,
('CARROTS, CLASS I, FRESH')
declare @containExpression nvarchar(max)
set @containExpression =replace(replace(replace(@FTSExpression,' ','<>'),'><',''),'<>',' ')
set @containExpression=(Select replace(@FTSExpression, ' ', '%'))
set @containExpression=(Select replace(@containExpression, ' ', ' AND tmp.ItemDescription like '))
set @containExpression=(select '''%'+@containExpression+'%''')
declare @tempfinal table(ItemDescription nvarchar(max),matchcontains int)
insert into @tempfinal select ItemDescription,CAST('1' AS INT) as matchcontains from @tempvalues tmp where tmp.ItemDescription like @containExpression
insert into @Result ( itemdescription,matchcontains )
select itemdescription,0 from @tempfinal
return;
END
调用函数
SELECT * from UDF_PredictItems_testfreetextdemo('Carrots baby')
【问题讨论】:
-
你在用
SQL Server吗? -
是的,我正在使用 SQL SERVER
-
你能把你的代码给我here吗?
-
我已经检查过了,它对我来说很好用。 ibb.co/rMCBMqh
-
我在我的问题中添加了我的示例函数,你能检查一下
标签: sql-server wildcard temp-tables sql-function