避免使用游标始终是一种更好的做法,在您的情况下,我认为它也是可以实现的。它的关键是您为了评估比较结果而执行的计算。
一种解决方案是创建一个函数,接收两个字符串并返回一个 1/0 值作为比较结果。然后您可以调用该函数作为 SELECT 语句的一部分并保存游标迭代。
以下是此类函数的示例:
CREATE FUNCTION fn_Compare
(
@firstValue varchar(50),
@secondValue varchar(50)
)
RETURNS bit
AS
BEGIN
DECLARE @Result bit
SET @Result = 0 --False by default
--!Here goes your specific logic for comparing string!
IF @firstValue = @secondValue
SET @Result = 1
RETURN @Result
END
GO
--Use it in a sentance
SELECT dbo.fn_Compare('TEST', 'TEST') AS Match --True
SELECT dbo.fn_Compare('TEST', 'TEST2') AS Match --False
--Use it in a query
SELECT
name,
name,
dbo.fn_Compare(name, name) AS Match
FROM sysobjects
WHERE
Type = 'u'
--Cleanup
DROP FUNCTION fn_Compare
我希望这有帮助。