sql和< >标记产生了一个问题寻找替代代码/方式

lkaoscv7  于 2021-07-26  发布在  Java
关注(0)|答案(0)|浏览(222)

我有一个这样的代码存储过程。

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和一个更干净的方法来完成同样的任务?

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题