我有一个这样的代码存储过程。
ALTER PROCEDURE [dbo].[TESTTAGISSUE] @rule nvarchar(30), @filter nvarchar(max)
AS
BEGIN
DECLARE @Split char(1),
@X xml,
@insertedguid uniqueidentifier,
@insertedTime datetime
--
-- MYDBTITLE
--
IF(@rule='TESTGET')
BEGIN
SET @Split = ' '
SELECT @X = CONVERT(xml,' <root> <s>' + REPLACE(@filter,@Split,'</s> <s>') + '</s> </root> ')
;with cte1 as (
SELECT SearchItems = '%'+T.c.value('.','varchar(20)')+'%'
FROM @X.nodes('/root/s') T(c)
)
SELECT Top 1 MYDB.*
FROM MYDB WITH(NOLOCK)
INNER JOIN cte1 on MYDB.MYDBTitle like SearchItems
AND MYDB.Category IS NOT NULL
END
END
代码的目标是找到匹配最多的顶级结果。似乎是可行的,但有没有办法做到这一点而不<或>在代码中?也许有什么方法可以逃脱或编码它们?
运行示例:
EXEC @return_value = [dbo].[TESTTAGISSUE]
@rule = N'TESTGET',
@filter = N'solid pine'
SELECT 'Return Value' = @return_value
GO
代码运行得很好。然而,一个独特的问题是,我们正在使用一些自定义工具来编辑sql,它不喜欢代码中的。我们正在考虑修复这个工具,但也在想这个sql和一个更干净的方法来完成同样的任务?
暂无答案!
目前还没有任何答案,快来回答吧!